2015-09-02 116 views
0

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

谢谢大家!

+0

什么配置文件里面你加入?你是否将代理传递给绝对安全或安全防护插件?声纳存储库中有一些示例:https://github.com/SonarSource/sonar-examples/tree/master/projects/languages/java/code-coverage – wemu

+0

是@wemu我加了! – Gabriel

回答

0

,能得到任何整合覆盖面,或者只是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

我得到0%。是的,我的pom文件与您的相似! – Gabriel

+0

检查您的目标文件夹中是否有jacoco-it.exec文件,其中包含一些内容(如sonar.jacoco.itReportPath中定义的内容)。这是Sonar将解析以获取统计信息等。 – MikeJ

+0

查看停止Tomcat实例是否将所有覆盖率数据刷新到jacoco-it.exec文件。如果文件大小增加,那么在做Sonar分析时尝试使用最终文件。另外,如果您在Sonar(配置仪表板)部分同时使用单元和集成测试小部件,则您将能够看到UT + IT的组合覆盖率。 “jacoco.agent.argLine”变量的价值是什么? –

相关问题