【问题标题】:Sonar Unit Tests Coverage Broken声纳单元测试覆盖范围中断
【发布时间】:2014-10-06 08:44:04
【问题描述】:

我们将 Sonar 从版本 3.7.x 升级到 4.1.2 再到 4.3.2,我们发现单元测试覆盖率已损坏。

单元测试覆盖率 % 字段为空,而单元测试成功显示为 100%。

为了进行测试,我设置了一个声纳测试实例版本 3.7.4,报告工作正常。

有什么想法吗?

【问题讨论】:

    标签: sonarqube


    【解决方案1】:

    几个月后 :-) 我得到了同样的结果 - 看来您现在需要显式设置覆盖范围(就像用于集成测试的故障安全插件一样)。

    最简单的方法是在您的声纳配置文件中使用 jacoco-maven-plugin,然后将surefire/failsafe 插件保持正常(即不要在声纳配置文件中覆盖)。笔记;如果您在任一插件中使用 argLine 来处理其他内容,请将其指定为 <argLine>${argLine} -your -extra -arguments</argLine>。只需在单元和集成中添加以下内容即可:

    <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>0.7.2.201409121644</version>
        <executions>
            <execution>
                <id>default-prepare-agent</id>
                <goals>
                    <goal>prepare-agent</goal>
                </goals>
            </execution>
            <execution>
                <id>default-prepare-agent-integration</id>
                <goals>
                    <goal>prepare-agent-integration</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
    

    不太受欢迎的选择

    我首先让单元覆盖以与我之前使用故障安全(使用 argLine 和对 jacoco 的依赖)相同的有点笨拙的方式工作,其中:

    <properties>
        <version.jacoco>0.7.2.201409121644</version.jacoco>
        <sonar.jacoco.reportPath>${project.basedir}/target/report/jacoco-unittest.exec</sonar.jacoco.reportPath>
        <sonar.jacoco.itReportPath>${project.basedir}/target/report/jacoco-integrationtest.exec</sonar.jacoco.itReportPath>
    </properties>   
    

    和:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.16</version>
        <configuration>
            <argLine>-javaagent:${settings.localRepository}/org/jacoco/org.jacoco.agent/${version.jacoco}/org.jacoco.agent-${version.jacoco}-runtime.jar=destfile=${sonar.jacoco.reportPath}</argLine>
            <parallel>false</parallel>
            <testFailureIgnore>false</testFailureIgnore>
            <excludes>
                <exclude>**/*IntegrationTest.java</exclude>
            </excludes>
            <includes>
                <include>**/*Test.java</include>
            </includes>
        </configuration>
        <dependencies>
            <dependency>
                <groupId>org.jacoco</groupId>
                <artifactId>org.jacoco.agent</artifactId>
                <version>${version.jacoco}</version>
                <classifier>runtime</classifier>
                <optional>false</optional>
            </dependency>
        </dependencies>
        <executions>
            <execution>
                <goals>
                    <goal>test</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
    

    【讨论】:

      猜你喜欢
      • 2019-11-01
      • 2016-02-25
      • 2016-05-24
      • 2021-09-17
      • 2013-10-14
      • 2013-10-18
      • 2020-04-25
      • 2016-11-18
      • 2016-08-04
      相关资源
      最近更新 更多