今回は、Junit5のTestInstanceアノテーションについてみていこうと思います。
詳しい内容はDocを参考にしてください。
TestInstanceアノテーション
個別テストの独立性を保証します。テスト間の発生する不具合を防ぐためJunitは個別テストメソッドーの実行前に新しいインスタンスを生成します。これによる個別のテストメソッドは完全独立のインスタンス環境で動作し、これをメソッド単位のライフライくるといいます。
TestInstanceのライフサイクルには以下の2つがあります。
@TestInstance(TestInstance.Lifecycle.PER_METHOD)
- PER_METHOD:メソッド単位
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
- PER_CLASS:クラス単位
全てのテストメソッドを同じインスタンス環境で動かしたい場合は単純に@TestInstanceアノテーションを使えばいいです。
クラス単位のライフサイクルを持つクラスはテスト実行中にただの一つのインスタンスを生成します。
PER_METHODよりPER_CLASSメリット
@BeforeAllや@AfterAllメソッドを静的メソッドで作成する必要がないです。@Nestedクラスで@BeforeAllや@AfterAllメソッドが使用できるようになります。
終わりに
今回のプロジェクトでJunit5を使ってやっていますが、知識不足を本当に感じています。本文にある@Nestedアノテーションもいつ使うのかは知っていますが、詳しく知らないので、次回に記載したいと思います。
