Unit testing 直接调用maven surefire插件时是否可以运行多个测试执行?(Sonar和Jenkins未运行所有单元测试)
我有一个maven项目,它使用surefire插件进行单元测试。目前,测试分为两个执行:默认测试和单元测试,两者都绑定到测试目标,如下所示:Unit testing 直接调用maven surefire插件时是否可以运行多个测试执行?(Sonar和Jenkins未运行所有单元测试),unit-testing,maven,jenkins,sonarqube,maven-surefire-plugin,Unit Testing,Maven,Jenkins,Sonarqube,Maven Surefire Plugin,我有一个maven项目,它使用surefire插件进行单元测试。目前,测试分为两个执行:默认测试和单元测试,两者都绑定到测试目标,如下所示: <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <executions>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<executions>
<!-- Test one set of files -->
<execution>
<id>default-test</id>
<goals>
<goal>test</goal>
</goals>
<configuration>
<includes> ... </includes>
</configuration>
</execution>
<!-- Test a different set of files -->
<execution>
<id>unitTests</id>
<goals>
<goal>test</goal>
</goals>
<configuration>
<includes> ... </includes>
</configuration>
<execution>
</executions>
</plugin>
</plugins>
我正在Jenkins上使用Sonar插件生成代码度量,Jenkins的设置如下:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<executions>
<!-- Test one set of files -->
<execution>
<id>default-test</id>
<goals>
<goal>test</goal>
</goals>
<configuration>
<includes> ... </includes>
</configuration>
</execution>
<!-- Test a different set of files -->
<execution>
<id>unitTests</id>
<goals>
<goal>test</goal>
</goals>
<configuration>
<includes> ... </includes>
</configuration>
<execution>
</executions>
</plugin>
</plugins>
- 运行构建操作
mvn clean安装-DskipTests
- 将Sonar插件作为构建后操作运行
[INFO] maven-surefire-plugin:213:test (default-cli)
请注意,只调用默认的cli执行,而不是默认的test+unitTests,因为(我假设)surefire插件是通过mvn surefire:test
直接调用的,而不是通过mvn test
生命周期调用的
我可以将默认cli执行添加到POM文件中,并从默认测试执行中复制配置,但这将只运行一组单元测试。在unitTests
执行中配置的单元测试根本不会运行,即使该执行绑定到相同的目标
当Sonar插件调用mvn surefire:test时,如何确保调用默认cli和unitTests执行
我想也许我的Jenkins设置应该改变,这样单元测试就可以在正常的构建操作中运行,生成代码覆盖率报告,然后Sonar插件作为构建后操作运行,并加载这些报告以执行分析。不确定这是否可行,或者需要对我的POM文件进行哪些更改来支持这一点(希望对POM文件进行最小更改是另一个目标)
我想也许我的詹金斯设置应该改变,这样
单元测试在生成代码的正常构建操作中运行
覆盖率报告,然后Sonar插件作为后期构建运行
操作并加载这些报告以执行分析
这似乎是个好主意。你可以这样做。您可以在不同的配置文件中配置surefire插件,并使您希望工具使用的插件在默认情况下处于活动状态。我最近遇到了类似的问题,这是pom now: