Joh*_*zen 7 unit-testing maven jenkins maven-surefire-plugin sonarqube
我有一个使用surefire插件进行单元测试的maven项目.目前测试分为两个执行default-test和unitTests,两者都绑定到测试目标,如下所示:
<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>
Run Code Online (Sandbox Code Playgroud)
这在运行时工作正常mvn test:
$ mvn test
...
[INFO] maven-surefire-plugin:2.13:test (default-test)
...
[INFO] maven-surefire-plugin:2.13:test (unitTests)
Run Code Online (Sandbox Code Playgroud)
我在Jenkins上使用Sonar插件生成代码指标,Jenkins的设置如下:
mvn clean install -DskipTests这意味着Sonar插件运行单元测试,单元测试仅运行一次.当Sonar插件运行时,我看到以下输出:
[INFO] maven-surefire-plugin:213:test (default-cli)
Run Code Online (Sandbox Code Playgroud)
请注意,只调用default-cli执行而不是default-test + unitTests,因为(我假设)surefire插件是mvn surefire:test通过mvn test生命周期而不是通过生命周期直接调用的.
我可以向POM文件添加default-cli执行,并从默认测试执行中复制配置,但这只会运行一组单元测试.在unitTests执行中配置的单元测试根本不运行,即使该执行绑定到相同的目标.
如何在Sonar插件调用时确保调用default-cli和unitTests执行mvn surefire:test?
我想也许我的Jenkins设置应该改变,以便单元测试在正常构建操作中运行,生成代码覆盖率报告,然后Sonar插件作为构建后操作运行并加载这些报告以执行分析.不确定这是否可行,或者我的POM文件需要做哪些更改才能支持这一点(希望对POM文件进行最小的更改是另一个目标).
我想也许我的 Jenkins 设置应该改变,以便单元测试在正常的构建操作中运行,生成代码覆盖率报告,然后 Sonar 插件作为构建后操作运行并加载这些报告以执行分析。
这似乎是个好主意。您可以使用Maven 配置文件来执行此操作。您可以在不同的配置文件中配置 Surefire 插件,并使您希望工具默认使用的插件处于活动状态。
| 归档时间: |
|
| 查看次数: |
2153 次 |
| 最近记录: |