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

Maven Verify Starting and Stopping the Spring Test Runner on Each class

我有一个 Spring 引导应用程序,其中包含大约 500 个测试(单元和主要是集成)。

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

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

IntelliJ 第二次点击 -> 运行 所有测试只启动一次。 我们的 Jenkins 作业是 运行 使用 "mvn verify -P itest" 进行测试,所以我的问题是如何更改此行为,仅启动和停止测试 运行ner 一次(使用此 "mvn verify -P itest"命令)。

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

这是我们基础抽象集成测试的注释class

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = MainApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT)

我发现这篇文章可能与我的问题类似,但这并不能解释 IntelliJ 给我的行为。

非常感谢

我发现了为什么会这样。我的 pom 文件中有一个设置说明 'reuseForks' maven failsafe 属性 为假。

我将其更改为 true,现在可以正常工作了。

Intellij 以相同的方式工作 - 它为所有测试重复使用分叉。

阅读更多

http://maven.apache.org/surefire-archives/surefire-2.17/maven-failsafe-plugin/examples/fork-options-and-parallel-execution.html