読者です 読者をやめる 読者になる 読者になる

c-bata web

@c_bata_ のメモ。python多め

JUnit勉強内容まとめ2(テストメソッドの書き方)

Java・Android テスト

前回は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)

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)

今までJUnitの勉強に使っていた本はこちら↓。この本はJUnitに関してはあまり詳しく書いていなかったので,JUnitを勉強したいという人は他の書籍をおすすめします。

Eclipse 4.2 完全攻略

Eclipse 4.2 完全攻略


参考資料

いくつか後々も見返したい記事が見つかったのでメモ。

↑の記事は,JUnitを用いたユニットテストは実際どうなのかということが書かれています。JUnitは使いこなすと便利なツールであることには変わりは無いでしょうが,そこを目的としているようではいけないなと考えさせられました。まだ読んだことのない人は一度読んでおくことをおすすめします。