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