Java Spring引导测试类能否重用应用程序上下文以加快测试运行?

Java Spring引导测试类能否重用应用程序上下文以加快测试运行?,java,spring,spring-boot,dependency-injection,spring-test,Java,Spring,Spring Boot,Dependency Injection,Spring Test,@ContextConfiguration位置属性对于Spring引导集成测试没有意义。有没有其他方法可以跨多个用@springbootest注释的测试类重用应用程序上下文 是的。链接点指向SpringFramework文档,它由引擎盖下的SpringBoot使用 顺便说一句,默认情况下,在使用@ContextConfiguration时也会重用上下文 @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) 上面的注释表示加载了

@ContextConfiguration
位置属性对于Spring引导集成测试没有意义。有没有其他方法可以跨多个用
@springbootest
注释的测试类重用应用程序上下文

是的。链接点指向SpringFramework文档,它由引擎盖下的SpringBoot使用

顺便说一句,默认情况下,在使用
@ContextConfiguration
时也会重用上下文

@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
上面的注释表示加载了完整的上下文,并且在测试中使用了相同的上下文。这意味着它只加载了一次


SpringBoot提供了@SpringBootTest注释,当您需要SpringBoot功能时,可以将其用作标准SpringTest@ContextConfiguration注释的替代品。注释的工作原理是通过SpringApplication为像我这样从Google登陆的人创建测试中使用的ApplicationContext:

如果您的Maven surefire插件中有
false
,那么您的上下文就不可能被重用,因为您正在为每个测试类生成一个新的JVM


这在Spring文档中有很好的记录:

将vicusbass指向文档可能是个好主意@SeanCarroll,是的。他本想这么做,但心烦意乱,忘了回去。答案现已更新。谢谢,你说得对。我在测试类上有
@DirtiesContext
,我误解了它的作用。我在任何地方都删除了它(在类设置中仍然有清理),测试运行速度加快了3分钟,这是30%,这就是我的测试的配置方式。然而,我有
@DirtiesContext
注释,这就是为每个测试类重新启动一切的原因
@DirtiesContext(classMode=DirtiesContext.classMode.AFTER\u CLASS)
我正在调查是否可以删除它,但到目前为止,我发现这些表存在一些问题