我继承了一个奇怪的maven多模块项目。标准业务类和单元测试位于一个名为“代码”的模块中。我们为这个模块提供了很好的简单工作声纳指标。第二个模块包含针对已部署的glassfish服务器运行的各种集成样式测试,这些测试在集成测试模块中作为单元测试运行。
pom.xml // root level,
code // business code and unit tests :-)
moduleA
moduleB
integ-test // ;-(
moduleA
moduleB
我知道最简单的选择是移动整合测试'课程分为'代码'模块并将它们重构为真正的集成测试,但目前这不是一个选项。
我已经想出了一种记录“整合测试”代码覆盖率的方法。模块通过使用jacoco:dump目标将jacococ.exec下载到集成测试模块。
我的maven pom结构现在看起来像这样
pom.xml // defined jacoco verify -> report goal
code // business code and unit test
moduleA
target/jacoco.exec - unit test coverage
pom.xml
pom.xml - defines standard jacoco prepare-agent goal
integ-test //
moduleA
target/jacoco.exec - really integration test coverage
pom.xml
pom.xml- defines jacoco dump and merge
我目前的方法是合并所有jacococ.exec文件的'整合测试'模块并使用' destFile'保存这些详细信息的价值'代码'模块作为jacoco-it.exec文件。标准声纳:声纳目标应该接收此文件并将其用作集成测试覆盖率。
pom.xml
integ-test
moduleA
target/jacoco.exec - really integration test coverage modA
moduleB
target/jacoco.exec - really integration test coverage modB
code
moduleA
moduleB
target/jacoco-it.exec - This should be the merged content of the two files above
pom.xml
我的根级别pom.xml定义了这个jacoco-maven-plugin配置
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<configuration>
<append>true</append>
<includes>
<include>com/a/b/c/**</include>
</includes>
</configuration>
<executions>
<execution>
<id>jacoco-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>jacoco-dump</id>
<phase>pre-integration-test</phase>
<goals>
<goal>dump</goal>
</goals>
</execution>
<execution>
<id>jacoco-merge</id>
<phase>post-integration-test</phase>
<goals>
<goal>merge</goal>
</goals>
<configuration>
<fileSets>
<fileSet implementation="org.apache.maven.shared.model.fileset.FileSet">
<directory>${project.basedir}/integ-test</directory>
<includes>
<include>*.exec</include>
</includes>
</fileSet>
</fileSets>
<destFile>${sonar.jacoco.itReportPath}</destFile>
</configuration>
</execution>
<execution>
<id>jacoco-site</id>
<phase>verify</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
<sonar.jacoco.itReportPath>${project.basedir}/../target/jacoco-it.exec</sonar.jacoco.itReportPath>
我已将jacoco:merge目标链接到maven后集成测试阶段,以确保在测试运行后发生合并,但是jacoco-it.exec&#39;文件始终在“整合测试”中创建。文件夹中。
有什么建议吗?
答案 0 :(得分:0)
指向主pom目标目录中的destFile怎么样?只需定义
<configuration>
<append>true</append>
<destFile>${project.basedir}/../target/jacoco-it.exec</destFile>
<propertyName>jacoco.integrationtest.arguments</propertyName>
</configuration>
在子项目中。所有覆盖数据都将附加在jacoco-it.exec文件中。 此文件由sonarqube接收,您将看到覆盖范围为IT覆盖范围。 您也可以使用jacoco.exec作为文件名。