Java Jenkins和Jacoco集成测试覆盖率

Java Jenkins和Jacoco集成测试覆盖率,java,maven,jenkins,jacoco,Java,Maven,Jenkins,Jacoco,我刚刚在maven依赖项上添加了Jacoco来运行集成测试。然后,我创建了一个集成测试来测试我的控制器。例如,我测试了HTTP响应代码、头和响应资源。之后,我在maven上创建了一个概要文件,启动了一个嵌入式tomcat。所以,每次我想运行集成测试时,我都会将概要文件放在maven目标上。然而,当我在Jenkins上执行构建时,Sonar读取来自Jacoco的报告,报告说我没有测试我的控制器。问题是:我如何告诉Jacoco我已经通过了我的控制器、服务和存储库 谢谢大家 您是否获得了任何集成覆盖率

我刚刚在maven依赖项上添加了Jacoco来运行集成测试。然后,我创建了一个集成测试来测试我的控制器。例如,我测试了HTTP响应代码、头和响应资源。之后,我在maven上创建了一个概要文件,启动了一个嵌入式tomcat。所以,每次我想运行集成测试时,我都会将概要文件放在maven目标上。然而,当我在Jenkins上执行构建时,Sonar读取来自Jacoco的报告,报告说我没有测试我的控制器。问题是:我如何告诉Jacoco我已经通过了我的控制器、服务和存储库


谢谢大家

您是否获得了任何集成覆盖率,还是只有0%? 使用maven和Sonar设置集成测试覆盖范围可能非常棘手

检查运行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>    

你添加的个人资料中有什么?您是否将代理传递给surefire或故障保护插件?声纳存储库中有一些例子:我得到了0%。是的,我的pom文件和你的相似!检查目标文件夹中是否有一个jacoco-it.exec文件,其中包含sonar.jacoco.itReportPath中定义的某些内容。这是Sonar将解析的内容,以获取统计信息等。查看停止Tomcat实例是否会将所有覆盖率数据刷新到jacoco-it.exec文件中。如果文件大小增加,则在进行声纳分析时尝试使用最终文件。另外,如果您在Sonar configure dashboard部分中同时使用单元测试和集成测试小部件,那么您将能够看到UT+IT组合覆盖范围。jacoco.agent.argLine变量的值是多少?