【问题标题】:How to configure code coverage to work in Sonarqube using JaCoCo when unit tests are written in Groovy当用 Groovy 编写单元测试时,如何使用 JaCoCo 配置代码覆盖率以在 Sonarqube 中工作
【发布时间】:2014-06-04 06:26:51
【问题描述】:

我正在编写一个应用程序,其目标类(在 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 覆盖率(使用 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 版)的所有默认设置。

【问题讨论】:

    标签: groovy maven-3 sonarqube jacoco


    【解决方案1】:

    因此,您必须在src/test/java 文件夹中至少有一个扩展名为.java 的文件(甚至不必是测试),然后一切正常。它让我想起了一个与 Maven 的 Groovy 集成错误,该错误过去需要一个 Java 文件与您的 Groovy 代码一起使用,但他们已经修复了这个问题。

    【讨论】:

    • Java 文件真的需要在src/test/resources 还是只是src/test/java
    • 对不起,我的意思是src/test/java。我会更新我的答案。
    猜你喜欢
    • 2019-02-12
    • 2014-05-11
    • 2023-02-03
    • 2016-01-31
    • 2017-10-07
    • 2020-07-18
    • 2016-12-11
    • 2018-11-13
    相关资源
    最近更新 更多