对于最新稳定版本,请使用Spring Framework 7.0.1spring-doc.cadn.net.cn

并行测试执行

Spring Framework 5.0 引入了在 使用Spring TestContext框架时,仅使用一个JVM。一般来说,这意味着大多数 测试类或测试方法可以并行运行,无需修改测试代码 或者配置。spring-doc.cadn.net.cn

关于如何设置并行测试执行的详细信息,请参见你的文档 测试框架、构建工具或集成开发环境。

请记住,在测试套件中引入并发可能会导致 意外副作用、奇怪的运行时行为,以及间歇性失败的测试 看起来是随机的。因此,春季团队提供以下一般指导方针 说明何时不该同时运行测试。spring-doc.cadn.net.cn

如果测试有以下情况,请不要同时运行:spring-doc.cadn.net.cn

  • 使用 Spring Framework 的@DirtiesContext支持。spring-doc.cadn.net.cn

  • 用Spring靴@MockBean@SpyBean支持。spring-doc.cadn.net.cn

  • 用JUnit 4@FixMethodOrder支持或任何测试框架功能 该系统旨在确保测试方法按特定顺序运行。注意 但如果整个测试类并行运行,则不适用此原则。spring-doc.cadn.net.cn

  • 更改共享服务或系统的状态,如数据库、消息代理, FileSystem,以及其他。这适用于嵌入式系统和外部系统。spring-doc.cadn.net.cn

如果并行测试执行失败,且有异常说明应用上下文当前测试不再激活时,通常意味着应用上下文被移除上下文缓存在另一个话题里。spring-doc.cadn.net.cn

这可能是由于使用@DirtiesContext或因自动被驱逐出上下文缓存.如果@DirtiesContext如果是罪魁祸首,你要么得想办法 避免使用@DirtiesContext或将此类测试排除在并行执行之外。如果 最大尺寸上下文缓存如果超过了,你可以增加最大尺寸 藏匿处。详情请参见关于上下文缓存的讨论。spring-doc.cadn.net.cn

Spring TestContext框架中的并行测试仅在以下条件下才可能 基础测试上下文实现提供了一个复制构造器,详见 Java doc 的测试上下文.这DefaultTestContextSpring 中使用的 提供了这样的构造子。然而,如果你使用一个 第三方库,提供自定义测试上下文实施时,你需要 验证其适合并行测试执行。