当在Groovy中编写单元测试时,如何使用JaCoCo配置代码覆盖率以在Sonarqube中工作

时间:2014-04-19 22:20:17

标签: groovy maven-3 sonarqube jacoco

我正在编写一个应用程序,其目标类(在src / main / java中)被编写/编译为Java 7,但其单元测试(在src / test / java中)是用Groovy编写的。我在运行mvn sonar:sonar时尝试从Sonarqube获取指标。我得到了大部分内容,但我没有从JaCoCo获得代码覆盖率指标。相反,当跑步者到达JaCoCo传感器时,我得到以下消息:

Project coverage is set to 0% as no JaCoCo execution data has been dumped: C:\Users\fiddlerpianist\Projects\emailnotifier\target\jacoco.exec

但是,当我在Eclipse中运行EclEmma coverage(使用JaCoCo)时,我会使用这些Groovy测试获得完整的覆盖率报告。它只是通过Sonarqube不起作用。有谁知道为什么它不起作用,或者是否有一种方法可以配置不同的东西以使其工作?我已经尝试了一堆配置的排列,但到目前为止......没有运气。

我使用的Maven java编译器插件的配置略有不同(即我使用lombok):

    <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <compilerId>groovy-eclipse-compiler</compilerId>
                <source>1.7</source>
                <target>1.7</target>
                <compilerArguments>
                    <javaAgentClass>lombok.core.Agent</javaAgentClass>
                </compilerArguments>
                <fork>true</fork>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.codehaus.groovy</groupId>
                    <artifactId>groovy-eclipse-compiler</artifactId>
                    <version>2.7.0-01</version>
                </dependency>
                <dependency>
                    <groupId>org.codehaus.groovy</groupId>
                    <artifactId>groovy-eclipse-batch</artifactId>
                    <version>2.0.8-01</version>
                </dependency>
                <dependency>
                    <groupId>org.projectlombok</groupId>
                    <artifactId>lombok</artifactId>
                    <version>1.12.6</version>
                </dependency>
            </dependencies>
        </plugin>

我的Groovy依赖项的范围是test

<dependencies>
    <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy-all</artifactId>
        <version>2.0.8</version>
        <scope>test</scope>
    </dependency>
</dependencies>

我正在使用Sonarqube 3.7.4,Maven 3.1.1,Groovy 2.0.8和Java 7.我正在使用Sonar Maven插件的所有默认值(版本2.2)。

1 个答案:

答案 0 :(得分:1)

所以事实证明你必须在.java文件夹中至少有一个src/test/java扩展名的文件(甚至不需要进行测试),然后一切正常。它让我想起了Maven的一个Groovy集成错误,它曾经需要一个带有Groovy代码的Java文件,但是他们修复了它。