此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Framework 6.1.10Spring中文文档

此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Framework 6.1.10Spring中文文档

Spring Framework 5.0 引入了对在 使用 Spring TestContext 框架时的单个 JVM。一般来说,这意味着大多数 测试类或测试方法可以并行运行,而无需对测试代码进行任何更改 或配置。Spring中文文档

有关如何设置并行测试执行的详细信息,请参阅 测试框架、构建工具或 IDE。
有关如何设置并行测试执行的详细信息,请参阅 测试框架、构建工具或 IDE。

请记住,在测试套件中引入并发可能会导致 意外的副作用、奇怪的运行时行为以及间歇性失败或 看似随机。因此,Spring 团队提供了以下一般准则 用于何时不并行运行测试。Spring中文文档

如果测试出现以下情况,请不要并行运行测试:Spring中文文档

  • 使用 Spring Framework 的支持。@DirtiesContextSpring中文文档

  • 使用 Spring Boot 或支持。@MockBean@SpyBeanSpring中文文档

  • 使用 JUnit 4 的支持或任何测试框架功能 旨在确保测试方法按特定顺序运行。注意 但是,如果整个测试类并行运行,则此情况不适用。@FixMethodOrderSpring中文文档

  • 更改共享服务或系统(如数据库、消息代理、 文件系统等。这适用于嵌入式和外部系统。Spring中文文档

如果并行测试执行失败,并出现异常,指出当前测试不再处于活动状态,这通常意味着已从其他线程中删除。ApplicationContextApplicationContextContextCacheSpring中文文档

这可能是由于使用了 或由于自动逐出 .如果是罪魁祸首,你要么需要找到一种方法来 避免使用此类测试或将此类测试排除在并行执行之外。如果 已超过最大尺寸,可以增加最大尺寸 的缓存。有关详细信息,请参阅有关上下文缓存的讨论。@DirtiesContextContextCache@DirtiesContext@DirtiesContextContextCacheSpring中文文档

如果并行测试执行失败,并出现异常,指出当前测试不再处于活动状态,这通常意味着已从其他线程中删除。ApplicationContextApplicationContextContextCacheSpring中文文档

这可能是由于使用了 或由于自动逐出 .如果是罪魁祸首,你要么需要找到一种方法来 避免使用此类测试或将此类测试排除在并行执行之外。如果 已超过最大尺寸,可以增加最大尺寸 的缓存。有关详细信息,请参阅有关上下文缓存的讨论。@DirtiesContextContextCache@DirtiesContext@DirtiesContextContextCacheSpring中文文档

只有在以下情况下,才能在Spring TestContext Framework中并行执行测试 基础实现提供了一个复制构造函数,如 用于 TestContext 的 javadoc。Spring 中使用的构造函数提供了这样的构造函数。但是,如果您使用 提供自定义实现的第三方库,您需要 验证它是否适合并行测试执行。TestContextDefaultTestContextTestContext
只有在以下情况下,才能在Spring TestContext Framework中并行执行测试 基础实现提供了一个复制构造函数,如 用于 TestContext 的 javadoc。Spring 中使用的构造函数提供了这样的构造函数。但是,如果您使用 提供自定义实现的第三方库,您需要 验证它是否适合并行测试执行。TestContextDefaultTestContextTestContext