2017-08-18 38 views
2

我的项目设置非常简单(在github所有可用的源):获取声纳正确的覆盖单元测试和集成测试在不同的Maven模块


↳后端
↳客户
↳集成,测试

及后乳宁行家:

mci sonar:sonar -Dsonar.host.url=http://localhost:9000 -Dsonar.login=12...9 

我看到单元和INTEGRAT离子测试对于声纳是可见的,但IT覆盖并非如此。 sonar coverage sonar coverage detailed

对于Intelij IDEA jacoco-it.exec看起来不错: idea coverage

我假设的罪魁祸首是在这里:

[INFO] Sensor JaCoCoSensor [java] 
[INFO] No JaCoCo analysis of project coverage can be done since there is no class files. 
[INFO] Sensor JaCoCoSensor [java] (done) | time=1ms 

所以,我做小hack(简称:复制所有的源文件到integration-test模块):

<properties> 
     <sonar.sources>${basedir}/target/copied</sonar.sources> 
    </properties> 
    [...] 
     <!-- hack to generate coverage reports --> 
     <plugin> 
      <artifactId>maven-resources-plugin</artifactId> 
      <version>${maven-resources-plugin.version}</version> 
      <executions> 
       <execution> 
        <id>copy-resources</id> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>copy-resources</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>${sonar.sources}</outputDirectory> 
         <resources> 
          <resource> 
           <directory>${basedir}/../backend/src/main/java</directory> 
           <filtering>false</filtering> 
          </resource> 
         </resources> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>build-helper-maven-plugin</artifactId> 
      <executions> 
       <execution> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>add-source</goal> 
        </goals> 
        <configuration> 
         <sources> 
          <source>${sonar.sources}</source> 
         </sources> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

但现在我所有的类ALE复制(从../target/copied DIR声纳也表明类): sonar coverage duplicated

声纳版本:6.5
Jacoco Maven插件:0.7.5.201505241946(也尝试最新的0.7.9)

任何想法我应该在这里做什么?

回答

1

貌似我对这个问题的答案:没有产生

  1. 报告,因为post-unit-test执行死刑是在错误的阶段。而不是<phase>test</phase>我现在有<phase>verify</phase>

  2. 我有一个错误的目标post-integration-test。这种变化是从<goal>report-integration</goal><goal>report-aggregate</goal>

    • This goal允许我创建覆盖率报表时,测试从被测代码独立的项目。
  3. 添加的属性: <jacoco.itReportPath>${project.basedir}/../integrations-tests/target/jacoco-it.exec</jacoco.itReportPath><sonar.jacoco.reportPaths>${jacoco.itReportPath},${project.build.directory}/jacoco-it.exec,${project.build.directory}/jacoco.exec</sonar.jacoco.reportPaths>

所有这些chages和github

-1

我主要使用jacoco进行覆盖。你需要有一些东西的地方开始

  1. 启用和配置万无一失插件
  2. 启用和配置jacoco插件

这是一个时间的配置,你将建立和忘记之前,我作为父母的一个项目启用了此功能。随时检查出来: https://github.com/slixes/parent/blob/master/pom.xml

+0

可用的更新项目是的,我已经配置这些插件。 Surefire运行UT,Maven-failsafe插件运行IT测试。并配置jacoco(前/后单元测试和前/后整合测试)。不会被复制,因为我不想使其无法读取。 – Pawel

相关问题