背景
普段のシステム開発で使用しているJUnitですが、
感覚的に使用している感じで、しっかり理解して使えていないように感じてきましたので、
改めてまとめてみます…。
Junit5のアノテーションについて
@Test
- テストメソッドを宣言する
@Timeout
@Timeout(value = 1, unit=TimeUnit.MINUTES)
- 実行時間が長くなるテストがテスト全体の実行をとめてしまわないように保険として使うべき機能で、
パフォーマンステストのために利用する機能ではない。
@Disabled
- junit4では
@ignore
だったもの - 仕様変更を一部に対して適用したが、すべてに対して変更が施されておらず、
テストが失敗するものには@Disabled
を付与して、失敗を一時的に回避させる
@BeforeEach
- 各テストメソッドの前に実行するメソッドに付与する
- 主にテストの前処理に使用する
@AfterEach
- 各テストメソッドの後に実行される
- 主にテストの後処理に使用する
- 自動テストでは、何度実行しても同じ結果になるように前処理でテスト用に登録・更新したデータを元の状態に戻すために使用する
@BeforeAll
- テストクラス内のすべてのテストの前に実行される
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
を付与する
@AfterAll
- テストクラス内のすべてのテストの後に実行される
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
を付与する
@Order
- 順番を指定する
- クラスに
@TestMethodOrder(OrderAnnotation.class)
をつける- junitに対して、テストがOrderついていることを示してあげる
@Nested
- インナークラスのテストクラスに付与する
@DisplayName
- テストに適切な名前を付与する
- メソッドにもクラスにも付与できる
@Tag
- テストにタグをつける
@ParameterizedTest
- パラメータ化テストであるメソッドとなる
所感
JUnit5で自動テストするなら上記のアノテーションが使えればよいかなと思います。