我刚刚在我的maven依赖项上添加了Jacoco来运行集成测试。然后,我创建了一个集成测试来测试我的控制器。例如,我测试了我的HTTP响应代码,标头和响应资源。之后,我在maven上创建了一个启动嵌入式tomcat的配置文件。因此,每次我想运行我的集成测试时,我只是将配置文件放在maven目标上。但是,当我在Jenkins上执行构建并且Sonar从Jacoco读取报告时,报告说我没有测试我的控制器。问题是:我如何告诉Jacoco我已通过我的控制器,服务和存储库?
感谢所有人!
答案 0 :(得分:0)
您是否获得任何集成覆盖率,或仅为0%? 使用maven和Sonar设置Integration Test Coverage非常棘手。
检查运行IT测试时是否生成了jacoco文件。
检查您的POM设置与此相比......
<properties>
<!-- Jacoco Properties -->
<jacoco.version>0.7.4.201502262128</jacoco.version>
<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
<sonar.core.codeCoveragePlugin>jacoco</sonar.core.codeCoveragePlugin>
<sonar.jacoco.itReportPath>${project.basedir}/target/jacoco-it.exec</sonar.jacoco.itReportPath>
<sonar.language>java</sonar.language>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.version}</version>
<executions>
<execution>
<id>prepare-unit-test-agent</id>
<configuration>
</configuration>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>jacoco-site</id>
<phase>verify</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
<execution>
<id>prepare-it-test-agent</id>
<configuration>
<propertyName>jacoco.agent.argLine</propertyName>
<destFile>${sonar.jacoco.itReportPath}</destFile>
<append>true</append>
</configuration>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<argLine>${jacoco.agent.argLine}</argLine>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>