はじめてのおつかいならぬ、はじめての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メソッドで用いる主な比較メソッド
(assertThat(a, 比較メソッド())となっているとする)
・CoreMatchersクラスの主なメソッド
メソッド | 仕様 |
is | equalsメソッドで引数とaを比較し、等しければテスト成功 instanceOf演算子で引数とa(オブジェクト)を比較し、等しければテスト成功 |
not | equalsメソッドで引数とaを比較し、等しくなければテスト成功 |
nullValue | aがnullである場合、テスト成功 |
notNullValue | aがnullでない場合、テスト成功 |
・JUnitMatchersクラスの主な比較メソッド
メソッド | 仕様 |
hasItem | 指定した値がa(List)内に含まれていればテスト成功 |
hasItems | 指定した値が全てa(List)の中に含まれていればテスト成功 |
・組み合わせて使用できるメソッド
メソッド | 仕様 |
is | 引数の比較処理がテスト成功ならテスト成功 |
not | 引数の比較処理がテスト失敗であればテスト成功 |
allOf | 引数の比較処理が全て等しければテスト成功 |
anyOf | 引数の比較処理がどれか等しければテスト成功 |