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