【问题标题】:Jenkins and Jacoco Integration Test CoverageJenkins 和 Jacoco 集成测试覆盖率
【发布时间】:2015-09-03 06:14:37
【问题描述】:

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

谢谢大家!

【问题讨论】:

标签: java maven jenkins jacoco


【解决方案1】:

您是否获得任何集成覆盖率,还是只有 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>    

Link to GitHub example

BeyondCoding.net

【讨论】:

  • 我得到 0%。是的,我的 pom 文件和你的很相似!
  • 检查您的目标文件夹中是否有包含一些内容(定义在 sonar.jacoco.itReportPath 中)的 jacoco-it.exec 文件。这是 Sonar 将解析以获取统计信息等的内容。
  • 查看停止 Tomcat 实例是否会将所有覆盖数据刷新到 jacoco-it.exec 文件。如果文件大小增加,则在进行声纳分析时尝试使用该最终文件。此外,如果您在 Sonar(配置仪表板)部分同时使用单元测试和集成测试小部件,那么您将能够看到 UT+IT 组合覆盖率。 “jacoco.agent.argLine”变量的值是多少?
猜你喜欢
  • 1970-01-01
  • 2016-01-16
  • 1970-01-01
  • 1970-01-01
  • 2014-09-26
  • 2015-05-01
  • 2014-01-21
  • 2014-04-09
  • 2018-10-18
相关资源
最近更新 更多