JUnit勉強内容まとめ2(テストメソッドの書き方)
前回はJUnitを用いたテストの流れを確認したので,今回はテストメソッドの書き方を勉強していきます。
主なテストメソッド
よく使う結果確認のテストメソッドの一覧をまとめてみます。
結果確認のメソッドには,Assertクラスのassert ~
で始まるメソッドを使用します。これらのメソッドはテストクラスの中でよく利用されるので,↓のようにstaticインポートして記述することが多いです。
import static org.junit.Assert.*;
それではよく使われるメソッドを↓にまとめます。
- assertEquals(期待値, 実測値);
2つの引数を比較するメソッド。等しくない時は,テスト失敗。
- assertEquals(期待値, 実測値, 差分)
引数がfloatとdoubleの時は,第3引数に差分を指定します。期待値と実測値の差分が指定した差分以内ならテスト成功。
- assertNotNull(実測値)
実測値がnullでないことを確認。nullであるときはテスト失敗です。
- assertSame(期待値, 実測値)
期待値と実測値が同じオブジェクトであることを確認。同じオブジェクトじゃなかったらテスト失敗。
- assertTrue(実測値)
実測値がtrueであるかをテストします。falseの時はテスト失敗。
主なテストメソッドその2
先程示したテストメソッドは,メソッドの返り値が期待どおりであったかをテストするためのものです。しかし例外の発生のように,あるロジックに到達することがすでにテストの失敗となっているケースも有ります。
そういったものをテストするときには,failメソッドを使用します。 failメソッドの使い方については,↓のサンプルで僕は理解してます。
- 例外が発生することを確認するテスト
@Test public void testReigai(){ try{ //例)1÷0を計算するメソッド → 例外の発生 → 期待の動作を行いテスト成功 fail(); }catch(ArithmeticException){ //期待の動作 } }
- 例外が発生しないことが正しい動作の場合は,catchの中でfailメソッドを使う。
@Test public void testReigai(){ try{ //例)2÷1を計算するメソッド → 例外が発生しない → 期待の動作を行いテスト成功 //期待の動作 }catch(ArithmeticException){ fail(); } }
少し説明が分かりにくいかもしれませんが,要はプログラムにやってほしくない動作があればそこにfailメソッドを書けばテストは失敗してくれるということです。
ちなみにRuntimeExceptionなどのよきしないれいがいでは,catch文を抜けてスローされますが,この場合テストは失敗(fail)ではなく,エラーとして記録されるとのことです。
今後のJUnit勉強方法
とりあえずは書き方と代表的なテストメソッドにどんなものがあるのかというのを「Eclipse4.2完全攻略」という本で勉強しましたが,今のままではまだまだ使いこなせそうにないです。 イメージとしてはJUnitはサンプルコードをたくさん読んで行くほうが早い気がします。こちらの記事によると↓の書籍の練習問題がかなり参考になるとのことなので,今後はこの本を購入して具体的なテストコードの書き方を勉強していきます。

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)
- 作者: 渡辺修司
- 出版社/メーカー: 技術評論社
- 発売日: 2012/11/21
- メディア: 単行本(ソフトカバー)
- 購入: 14人 クリック: 273回
- この商品を含むブログ (69件) を見る
参考資料
いくつか後々も見返したい記事が見つかったのでメモ。
↑の記事は,JUnitを用いたユニットテストは実際どうなのかということが書かれています。JUnitは使いこなすと便利なツールであることには変わりは無いでしょうが,そこを目的としているようではいけないなと考えさせられました。まだ読んだことのない人は一度読んでおくことをおすすめします。