Maven验证在每个类上启动和停止Spring测试运行程序

Maven验证在每个类上启动和停止Spring测试运行程序,maven,spring-boot,integration-testing,Maven,Spring Boot,Integration Testing,我有一个Spring Boot应用程序,大约有500个测试(单元测试和大部分集成测试) 当我开始在IntelliJ中运行测试时,第二次单击->运行所有测试-测试运行大约10-15分钟 当我尝试在IntelliJ终端中使用“mvn verify-p itest”运行测试时,执行时间大约为一小时。这是因为该命令在每个类上启动和停止Spring Test Runner服务器(这不是我想要的结果) IntelliJ第二次单击->运行所有测试只启动一次。 我们的Jenkins工作是使用“mvn verif

我有一个Spring Boot应用程序,大约有500个测试(单元测试和大部分集成测试)

当我开始在IntelliJ中运行测试时,第二次单击->运行所有测试-测试运行大约10-15分钟

当我尝试在IntelliJ终端中使用“mvn verify-p itest”运行测试时,执行时间大约为一小时。这是因为该命令在每个类上启动和停止Spring Test Runner服务器(这不是我想要的结果)

IntelliJ第二次单击->运行所有测试只启动一次。 我们的Jenkins工作是使用“mvn verify-P itest”运行测试,所以我的问题是如何更改此行为,只启动和停止测试运行程序一次(使用此“mvn verify-P itest”命令)

itest是我们在pom.xml中的配置文件,其中包括包含集成测试的类(使用maven failsafe插件)

下面是我们的基本抽象集成测试类的注释

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = MainApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT)
我发现这篇文章可能与我的问题相似,但这并不能解释IntelliJ给我的行为


提前多谢

我找到了发生这种情况的原因。我的pom文件中有一个设置 “reuseForks”maven failsafe属性为false

我把它改成了真的,现在它工作得很好

Intellij以同样的方式工作——它在所有测试中重用fork

阅读更多


行为由IDE或Maven定义,这是基于您编写的测试类型。通常,您应该创建更少的集成测试和更多的单元测试。这将减少测试时间。。。请看,您应该检查是否可以在较低级别的测试中进行测试,以防止启动整个Spring部分…这通常是可行的。很明显,在我的情况下,这是不正确的。因为当使用IDE运行它时,服务器只运行一次,但当从Maven运行它时,它会为每个类启动和关闭