What is it, naokirin?

はじめてのJUnit

はじめてのおつかいならぬ、はじめてのJUnit


なんだかんだプログラミングをやってきたくせに、単体テスト系はほぼノータッチできた私。
Javaそのものも大体知ってるくらいでそんなにまともな開発で使ったことがないという恐るべき「Microsoft信者か!」レベルのC系列に偏ったプログラミングスキルなので、この際テスト駆動開発Javaから触っていってみようと思う。
(そこ!この前の日記に「CppUnitのVisualStudioでの設定」とか書いてたじゃないかとか言わない。)


とりあえず、JUnitとコードカバレッジ計測ツールはEclipseに導入されているので、テストコードの書き方を勉強。

ふっ、この程度私が苦戦すると思ったか?


思ったそこのあなた。
素晴らしい、正解です。

まず、「何のコードを書こうか」から始まり、「Javaの仕様ってどうなってたっけ?」から、「failメソッドって何に使うのー?」まで(こりゃヒドい)。

とにもかくにも、なんとかJavaを思い出し、テストコードを作成し、テスト駆動開発を一応成功させることができた。
カバレッジ計測ツールはなかなかナイスなツールですな。

忘れないうちに主なアノテーション、assertXxxメソッド、比較メソッドを書き下しておこう。

アノテーション

アノテーション仕様
@Testテストメソッド
@Beforeテストメソッド実行前に毎回実行されるメソッド
@Afterテストメソッド実行後に毎回実行されるメソッド
@BeforeClassテストクラス実行前に実行されるメソッド
@AfterClassテストクラス実行後に実行されるメソッド
@Ignoreテストメソッドと認識させたくないメソッド

assertXxxメソッド

メソッド仕様
assertTrue(boolean a)aがtrueの場合、テスト成功
assertFalse(boolean a)aがfalseの場合、テスト成功
assertEquarls(Object a, Object b)aとbに対してequalsメソッドで比較し、等しければテスト成功
assertEquals(double a, double b, double c)aとbとの差がcよりも小さい場合、テスト成功
assertArrayEquals(Object a, Object b)aとbを配列として要素数の比較と、同じインデックスの要素間でのequalsメソッドによる比較を行い、全て等しければテスト成功
assertNotNull(Object a)aがnullでない場合、テスト成功
assertNull(Object a)aがnullの場合、テスト成功
assertSame(Object a, Object b))aとbに対して==の比較を行い、等しければテスト成功
assertNotSame(Object a, Object b)aとbに対して==の比較を行い、異なればテスト成功
fail()強制的にテストを失敗とする
assertThatメソッドは他のassertEqualsメソッドなどと違い、引数でどんな比較を行うかを指定します。

assertThatメソッドで用いる主な比較メソッド
(assertThat(a, 比較メソッド())となっているとする)
・CoreMatchersクラスの主なメソッド

メソッド仕様
isequalsメソッドで引数とaを比較し、等しければテスト成功
instanceOf演算子で引数とa(オブジェクト)を比較し、等しければテスト成功
notequalsメソッドで引数とaを比較し、等しくなければテスト成功
nullValueaがnullである場合、テスト成功
notNullValueaがnullでない場合、テスト成功

・JUnitMatchersクラスの主な比較メソッド

メソッド仕様
hasItem指定した値がa(List)内に含まれていればテスト成功
hasItems指定した値が全てa(List)の中に含まれていればテスト成功

・組み合わせて使用できるメソッド

メソッド仕様
is引数の比較処理がテスト成功ならテスト成功
not引数の比較処理がテスト失敗であればテスト成功
allOf引数の比較処理が全て等しければテスト成功
anyOf引数の比較処理がどれか等しければテスト成功