先日の初めての投稿から数週間、次の投稿をしてみました。
(先日の投稿:http://qiita.com/takumi_links/items/006777e9d5a29221dab0)
こないだ書評した「経験ゼロでもできるプログラミング現場の単体テスト」ですが、個人的に全てのサンプルを動かしてみた訳ではなかったのでイマイチ定着が薄かった…ということで、続編でもう少し単体テストについて掘り下げてみたいと思います。
■ Javaエンジニアのお友達:JUnit
JavaエンジニアにとってJUnitはお友達です。これまで入ったJavaの開発現場では必ず”Eclipse”(Java開発IDE)を使用してきましたが、そのEclipseで使用できるテスティングフレームワーク:JUnit。バージョンは古くなってますが、この本の後ろに”付録”という章がありまして、ここにツール・プラグイン・サンプルのセットアップ手順が書いてあります。現在のEclipseだと、標準でJunitが入ってることが多いかと思います。
<JUnitの仕組み>
① JUnitRunner → ② テストクラス → ③ テスト対象クラス
(テスト実行クラス) (JUnitの機能で作成) (開発者が作成)
①JUnitRunner から ②テストクラス のテストメソッドを呼び出し、そこからテストメソッドが ③テスト対象クラスのメソッドを呼び出して、その戻り値からテストの成否を判定するのがJUnitの仕組み。改めて確認すると…便利なフレームワークだと感心します。
<JUnit4のアノテーションのメモ(防備録用に)>
アノテーション | 説明 |
---|---|
@Test | テストメソッド。JUnitから呼び出される |
@Before | テストメソッドの前に実行される |
@After | テストメソッドの後に実行される |
@BeforeClass | テストクラスを実行し始めた時に1回実行される |
@AfterClass | テストクラスを実行し終了する時に1回実行される |
<JUnit4のメソッド>
※assert = 「〜であるはずだ」
メソッド | 説明 |
---|---|
assertTrue(Boolean condition) | conditionがtrueであれば成功 |
assertFalse(Boolean condition) | conditionがfalseであれば成功 |
assertEquals(Object expected,Object actual) | 期待値と実際値が等しければ成功 |
assertSame(Object expected,Object actual) | 期待値と実際値が等しければ成功 |
assertNull(Object object) | 実際値がNullであれば成功 |
assertNotNull(Object object) | 実際値がNull以外であれば成功 |
fail() | 強制的にテストを失敗にする |
評価用メソッドが失敗した時は、AssertionErrorを発生させる。
JUnitも奥が深い。
現場によっては独自テスティングフレームワークがあったりして、純粋なJUnitを組むことから遠ざかっていたので、もう一回初心に戻って勉強しないとなぁとしみじみ。