JaCoCo-SonarQube-没有关于每次测试覆盖率的信息

JaCoCo-SonarQube-没有关于每次测试覆盖率的信息,sonarqube,jacoco,Sonarqube,Jacoco,我使用JaCoCo来覆盖代码。单元测试报告是使用junit创建的,并且它们被正确导入,以便正确显示单元测试信息。 问题是,我收到了错误消息: 没有关于每个测试覆盖率的信息。代码覆盖率显示单元测试、集成测试和总体覆盖率的值为0%。 我检查了sonar-project.properties中的所有必需信息,如二进制、src、测试等 我正在使用: -SonarQube 4.5.1 -声纳跑步者2.4 -MySQL -junit 4.1.1 -jacoco 0.7.2 jacoco.exec位于项目基目

我使用JaCoCo来覆盖代码。单元测试报告是使用junit创建的,并且它们被正确导入,以便正确显示单元测试信息。 问题是,我收到了错误消息: 没有关于每个测试覆盖率的信息。代码覆盖率显示单元测试、集成测试和总体覆盖率的值为0%。 我检查了sonar-project.properties中的所有必需信息,如二进制、src、测试等

我正在使用:
-SonarQube 4.5.1
-声纳跑步者2.4
-MySQL
-junit 4.1.1
-jacoco 0.7.2

jacoco.exec位于项目基目录中的文件/目标中

您可以在下面看到sonar-project.properties: 在我看来,所有必要的路径都设置正确。(即二进制、src、测试)

这是sonar runner的日志文件:

13:56:05.883 INFO  - Sensor SurefireSensor...
13:56:05.883 INFO  - parsing C:\work\snapshots\steffen_latest\software\java\test\report\junit
13:56:06.149 INFO  - Sensor SurefireSensor done: 266 ms
13:56:06.149 INFO  - Sensor JaCoCoItSensor...
13:56:06.195 INFO  - Analysing C:\work\snapshots\steffen_latest\software\java\target\it-jacoco.exec
13:56:06.726 INFO  - **No information about coverage per test**.
13:56:06.726 INFO  - Sensor JaCoCoItSensor done: 577 ms
13:56:06.726 INFO  - Sensor JaCoCoOverallSensor...
13:56:06.851 INFO  - Analysing C:\work\snapshots\steffen_latest\software\java\.sonar\jacoco-overall.exec
13:56:07.178 INFO  - **No information about coverage per test**.
13:56:07.178 INFO  - Sensor JaCoCoOverallSensor done: 452 ms
13:56:07.178 INFO  - Sensor JaCoCoSensor...
13:56:07.209 INFO  - Analysing C:\work\snapshots\steffen_latest\or_base\software\java\target\jacoco.exec
13:56:07.521 INFO  - **No information about coverage per test**.
13:56:07.521 INFO  - Sensor JaCoCoSensor done: 343 ms
13:56:07.521 INFO  - Sensor CPD Sensor (wrapped)...
13:56:07.521 INFO  - JavaCpdEngine is used for java
13:56:07.521 INFO  - Cross-project analysis disabled
13:56:09.019 INFO  - Sensor CPD Sensor (wrapped) done: 1498 ms
13:56:09.144 INFO  - Execute decorators...
13:56:16.166 INFO  - Store results in database
有人能给我一个建议吗?有什么问题吗? 因为我不知道是什么问题。。。 几天以来我一直在研究这个问题,我真的不知道该怎么办


提前谢谢。

您是否尝试过使用
准备代理

mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install
此外,如果您的覆盖率一直保持在0%,您可能需要遵循:

如果您的项目已使用argLine配置surefire maven插件,请确保argLine定义为属性,而不是插件配置的一部分。”


在我的例子中,下面的命令是有效的

mvn clean org.jacoco:jacoco-maven-plugin:0.7.3.201502191951:prepare-agent install
mvn sonar:sonar 
检查代码覆盖率:启动SonarQube服务器->依次运行以上两个命令&您将在中看到代码覆盖率


仅供参考:我的SonarQube版本-5.1.2。您可以从下载最新版本。我也使用JUnit,在我的例子中,问题是因为我的pom.xml中有TestNG依赖项。在删除此不必要的依赖项后,一切都开始按预期工作。

使用此Maven配置,我可以看到每个测试数据

您需要配置sonar jacoco侦听器以获得每次测试的覆盖率

请注意,此功能已被弃用:“此功能在SonarQube级别已弃用,将不再接受进一步的改进/维护。”

false
假的
假的
杰科科
再利用报告
${project.reporting.outputDirectory}/jacoco-ut.exec
JAVA
org.apache.maven.plugins
maven surefire插件
2.12.4
听众
org.sonar.java.jacoco.JUnitListener
org.jacoco
jacocomaven插件
0.8.1
${sonar.jacoco.reportpath}
真的
代理人
配制剂
org.jacoco
org.jacoco.agent
0.8.1
运行时
org.codehaus.sonar-plugins.java
声纳jacoco监听器
1.2
测试

coverage per test是覆盖率之上的信息。coverage per test是关于哪个测试覆盖了哪个文件的信息。(而coverage只告诉您测试覆盖了哪些行)。因此,请根据这些信息澄清您的问题,因为“没有关于每个测试覆盖率的信息。”消息只通知我们您没有使用任何侦听器在每个测试之间转储jacoco会话。感谢您的提示。问题是我们没有使用任何侦听器在每个测试之间转储jacoco会话。是否有机会发布你怎么配置的?我也有problem@Stelos10请发布您是如何配置侦听器以在每个测试之间转储jacoco会话的…以获得每个测试的覆盖率指向一个示例项目的点,在该项目中,他们使用Maven配置文件启用特殊JUnit侦听器以启用此功能。请检查。
mvn clean org.jacoco:jacoco-maven-plugin:0.7.3.201502191951:prepare-agent install
mvn sonar:sonar 
    <skipTests>false</skipTests>
            <!--Jacoco settings -->
            <jacoco.haltOnFailure>false</jacoco.haltOnFailure>
            <jacoco.skip>false</jacoco.skip>

            <!-- sonar JACOCO properties -->
            <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
            <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
            <sonar.jacoco.reportPaths>${project.reporting.outputDirectory}/jacoco-ut.exec</sonar.jacoco.reportPaths>
            <sonar.language>java</sonar.language>


<!-- Added for Jacoco -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.12.4</version>
                <configuration>
                  <properties>
                    <property>
                      <name>listener</name>
                      <value>org.sonar.java.jacoco.JUnitListener</value>
                    </property>
                  </properties>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.1</version>
                <configuration>
                    <destFile>${sonar.jacoco.reportPaths}</destFile>
                    <append>true</append>
                </configuration>
                <executions>
                    <execution>
                        <id>agent</id>
                        <goals>
                          <goal>prepare-agent</goal>
                        </goals>
                      </execution>
                </executions>
            </plugin>



        <dependency>
            <groupId>org.jacoco</groupId>
            <artifactId>org.jacoco.agent</artifactId>
            <version>0.8.1</version>
            <classifier>runtime</classifier>
        </dependency>
        <dependency>
          <groupId>org.codehaus.sonar-plugins.java</groupId>
          <artifactId>sonar-jacoco-listeners</artifactId>
          <version>1.2</version>
          <scope>test</scope>
        </dependency>