並列テスト実行
Spring Framework 5.0 は、Spring TestContext フレームワークを使用する場合に、単一の JVM 内で並行してテストを実行するための基本的なサポートを導入しました。一般に、これは、ほとんどのテストクラスまたはテストメソッドを、テストコードや構成を変更せずに並行して実行できることを意味します。
並列テスト実行の設定方法の詳細については、テストフレームワーク、ビルドツール、IDE のドキュメントを参照してください。 |
テストスイートに同時実行性を導入すると、予期しない副作用、奇妙なランタイム動作、テストが断続的またはランダムに失敗する可能性があることに注意してください。Spring チームは、テストを並行して実行しない場合の次の一般的なガイドラインを提供します。
次の場合は、テストを並行して実行しないでください。
Spring Framework の
@DirtiesContext
サポートを使用します。Spring Boot の
@MockBean
または@SpyBean
サポートを使用します。JUnit 4 の
@FixMethodOrder
サポート、またはテストメソッドが特定の順序で実行されるように設計されたテストフレームワーク機能を使用します。ただし、テストクラス全体が並行して実行される場合、これは当てはまりません。データベース、メッセージブローカー、ファイルシステムなどの共有サービスまたはシステムの状態を変更します。これは、組み込みシステムと外部システムの両方に適用されます。
現在のテストの これは、 |
Spring TestContext フレームワークでの並列テスト実行は、TestContext (Javadoc) の javadoc に従って、基礎となる TestContext 実装がコピーコンストラクターを提供する場合にのみ可能です。Spring で使用される DefaultTestContext は、このようなコンストラクターを提供します。ただし、カスタム TestContext 実装を提供するサードパーティライブラリを使用する場合、それが並列テストの実行に適していることを確認する必要があります。 |