JUnit 5動的テスト - @TestFactory
テストケースを動的に生成する方法
動的テスト
@TestFactoryアノテーションを使うと、テストケースを動的に生成できる。@TestFactoryが指定されたメソッドは、DynamicNodeのコレクションを返す必要がある。厳密には、戻り値はCollection、Iterable、Iterator、Stream、または配列にできる。
Streamで返す場合はJupiterがclose()してくれるため、Files.lines()で生成したStreamも安全に利用できる。
DynamicNode自体は抽象クラスなので、実際にはDynamicTestまたはDynamicContainerを使用する。dynamicTest(String, Executable)はDynamicTestを生成し、第1引数はテスト名、第2引数はテスト内容である。
動的テストのライフサイクル
@BeforeEachと@AfterEachは、@TestFactoryが設定されたメソッドの前後に実行される。個々の動的テストの前後には実行されない。
動的テストをネスト構造にする
DynamicContainerを使用すると、動的テストをネスト構造にできる。コンテナには動的テストや別の動的コンテナを含められるため、階層的なテスト出力を作成できる。