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