並行測試執行
Spring TestContext Framework 為在單個 JVM 中並行執行測試提供了基本支援。通常,這意味著大多數測試類或測試方法都可以在不更改測試程式碼或配置的情況下並行執行。
| 有關如何設定並行測試執行的詳細資訊,請參閱您的測試框架、構建工具或 IDE 的文件。 |
請記住,在測試套件中引入併發可能會導致意想不到的副作用、奇怪的執行時行為以及間歇性或看似隨機失敗的測試。因此,Spring 團隊提供了以下關於何時不併行執行測試的一般指南。
如果測試滿足以下條件,請勿並行執行測試:
-
使用 Spring Framework 的
@DirtiesContext支援。 -
使用 Spring Framework 的
@MockitoBean或@MockitoSpyBean支援。 -
使用 Spring Boot 的
@MockBean或@SpyBean支援。 -
使用 JUnit Jupiter 的
@TestMethodOrder支援或任何旨在確保測試方法按特定順序執行的測試框架功能。但請注意,如果整個測試類並行執行,則不適用此規則。 -
更改共享服務或系統(如資料庫、訊息代理、檔案系統等)的狀態。這適用於嵌入式系統和外部系統。
|
如果並行測試執行失敗並出現異常,指出當前測試的 這可能是由於使用了 |
Spring TestContext Framework 中的並行測試執行只有在底層 TestContext 實現提供了複製建構函式時才可能實現,如 TestContext 的 Javadoc 中所述。Spring 中使用的 DefaultTestContext 提供了這樣的建構函式。但是,如果您使用提供自定義 TestContext 實現的第三方庫,您需要驗證它是否適合並行測試執行。 |