并行测试执行
TODAY Framework 5.0 引入了在使用 Infra TestContext 框架时在单个 JVM 中并行执行测试的基本支持。 通常,这意味着大多数测试类或测试方法可以并行运行,而无需更改测试代码或配置。
| 有关如何设置并行测试执行的详细信息,请参阅测试框架、构建工具或 IDE 的文档。 |
请记住,在测试套件中引入并发可能会导致意外的副作用、奇怪的运行时行为以及测试间歇性或看似随机地失败。 因此,Infra 团队针对何时不并行运行测试提供了以下一般准则。
如果测试符合以下情况,请勿并行运行测试:
-
使用 TODAY Framework 的
@DirtiesContext支持。 -
使用 Infra App 的
@MockBeanor@SpyBean支持。 -
使用 JUnit 4 的
@FixMethodOrder支持或任何旨在确保测试方法按特定顺序运行的测试框架功能。 但是,请注意,如果整个测试类并行运行,则这不适用。 -
更改共享服务或系统的状态,例如数据库、消息代理、文件系统等。 这适用于嵌入式和外部系统。
|
如果并行测试执行失败并出现说明当前测试的 这可能是由于使用了 |
只有当底层 TestContext 实现提供复制构造函数时,Infra TestContext 框架中的并行测试执行才可能,如 TestContext 的 javadoc 中所述。
Infra 中使用的 DefaultTestContext 提供了这样的构造函数。
但是,如果您使用提供自定义 TestContext 实现的第三方库,则需要验证它是否适合并行测试执行。
|