JUnit API探訪:@RunWith アノテーション
@RunWith アノテーション
テスト実行方法に際してのクラスを指定するためのアノテーション。
上記リンクの中では、こちらの解説が一番詳しく、良く纏まっています。
抜粋してポイント等を。
- @Ignore アノテーションもこの仲間。このアノテーションを付加すると、IgnoredClassRunnerというRunnerが実行され、テスト対象から除外される。
- 何も指定しない(@Testアノテーションのみ)場合は、デフォルト設定として BlockJUnit4ClassRunnerというRunnerが実行される。
- 敢えて指定する場合は、JUnit4.classの指定が推奨されている。
また、@RunWithアノテーションで指定可能な主なクラスは以下。(別個写経・実践・エントリ化していく方向で)
Suite
@RunWith(Suite.class)
テストの一括実行を行う際、実行クラス(一括実行を行うための指定をするクラス)に付加。
Categories
@RunWith(Categories.class)
- Suiteクラス同様、テストの一括実行に用いる。
- Suiteクラスのサブクラスとなる。
- Suiteクラスと異なり、@Categoryアノテーションによるフィルタリングを行う。
【TODO:テストのカテゴリ化】に関するエントリUP
Enclosed
@RunWith(Enclosed.class)
- こちらもSuiteクラス同様、テストの一括実行に用いる。Suiteクラスのサブクラス。
- 自動的にインナークラスで取得出来るクラス全てをテスト対象としてくれるらしい。
【TODO:テストのグルーピング】に関するエントリUP
Parameterized
@RunWith(Parameterized.class)
- テストに対してパラメータ化させたリストを提供し、実行させたい場合に用いる。
【TODO:パラメータ化テスト】に関するエントリUP
Theories
@RunWith(Theories.class)
大量の条件を用いる組み合わせテスト(マトリクステスト?)を行う際に用いる。
【TODO:Theoryによるマトリクステスト】に関するエントリUP
提供されているものの他にも、拡張して独自のRunnerを作る事も出来るようです。
【TODO:テストRunner拡張】に関するエントリUP