テストフェーズ
フェーズ1: 事前準備
ここで、テスト対象の初期化、必要な入力値、期待される結果などの準備を行う
フェーズ2: 実行
テスト対象オブジェクトに対して、テストする操作を行う
フェーズ3: 検証
テスト結果として得られた実測値が期待値と等価であるかを比較検証する。
フェーズ4: 後処理
次のテストに影響が出ないように処理を行う
アノテーション
@Test
テストを行うことを宣言する
@Ignore
一時的にテスト実行から除外する
@Before
重複する初期化処理を@Before内で設定することで、何度も同じコードを書く必要がなくなる。
@After
テスト実行後の後処理時に使用するアノテーション
モックとスタブ
どちらもテスト対象が依存するクラスやモジュールの代用として使用するクラスやモジュール。モックの使用する理由は、目的のメソッドがテストの実行中に呼び出されたかを検証するため。スタブは予測が難しいテストケースを検証可能なテストケースに変えるため。
Mockito
モックとスタブを利用する際に、利用される外部ライブラリ。
Mockitoを利用する準備
モックオブジェクトの作成
List<String>createMock = org.mockito.Mockito.mock(List.class);
スタブメソッドの再定義
スタブオブジェクトの戻り値を再定義するには、Mockitoのwhenメソッドとその戻り値の型であるthenReturnメソッドを利用する。
List<String>createMock = org.mockito.Mockito.mock(List.class);
when (createMock.get(1)).thenReturn("Hello");
assertEquals("Hello", createMock.get(1));
例外処理を行いたい場合は、
when (createMock.get(1)).thenThrow(new IndexOutOfBoundsException());
createMock.get(1);
参考資料
JUnit実践入門 ~体系的に学ぶユニットテストの技法