声纳单元测试覆盖范围破碎

时间:2014-07-14 15:50:43

标签: sonarqube

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

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

为了测试我设置了Sonar测试实例ver 3.7.4并且报告工作正常。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

几个月后:-)我得到了相同的 - 现在看来你需要明确设置覆盖范围(就像集成测试的failafe插件一样)。

最简单的方法是在你的声纳配置文件中使用jacoco-maven-plugin然后正常离开surefire / failafe插件(即不要在声纳配置文件中覆盖)。注意;如果您在其他任何内容的插件中使用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>