JUnit 5動的テスト - @TestFactory

テストケースを動的に生成する方法

動的テスト

@TestFactoryアノテーションを使うと、テストケースを動的に生成できる。@TestFactoryが指定されたメソッドは、DynamicNodeのコレクションを返す必要がある。厳密には、戻り値はCollectionIterableIteratorStream、または配列にできる。

Streamで返す場合はJupiterがclose()してくれるため、Files.lines()で生成したStreamも安全に利用できる。

DynamicNode自体は抽象クラスなので、実際にはDynamicTestまたはDynamicContainerを使用する。dynamicTest(String, Executable)DynamicTestを生成し、第1引数はテスト名、第2引数はテスト内容である。

動的テストのライフサイクル

@BeforeEach@AfterEachは、@TestFactoryが設定されたメソッドの前後に実行される。個々の動的テストの前後には実行されない。

動的テストをネスト構造にする

DynamicContainerを使用すると、動的テストをネスト構造にできる。コンテナには動的テストや別の動的コンテナを含められるため、階層的なテスト出力を作成できる。