我使用sonarqube作为测试结果的输出,而maven和Jacoco用于测试测试用例。
Sonarqube版本是5.4 Maven版本是3.3.9 Jacoco版本0.7
这是我的pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.sonarqube</groupId>
<artifactId>example-ut-maven-jacoco</artifactId>
<version>1.0-SNAPSHOT</version>
<name>Java :: UT Coverage with JaCoCo :: Maven</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<!-- Minimal supported version is 4.7 -->
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.6.201602180812</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.5.201505241946</version>
<executions>
<!--
Prepares the property pointing to the JaCoCo runtime agent which
is passed as VM argument when Maven the Surefire plugin is executed.
-->
<execution>
<id>pre-unit-test</id>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<!-- Sets the path to the file which contains the execution data. -->
<destFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</destFile>
<!--
Sets the name of the property containing the settings
for JaCoCo runtime agent.
-->
<propertyName>surefireArgLine</propertyName>
</configuration>
</execution>
<!--
Ensures that the code coverage report for unit tests is created after
unit tests have been run.
-->
<execution>
<id>post-unit-test</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
<configuration>
<!-- Sets the path to the file which contains the execution data. -->
<dataFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</dataFile>
<!-- Sets the output directory for the code coverage report. -->
<outputDirectory>${project.reporting.outputDirectory}/jacoco-ut</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.15</version>
<configuration>
<!-- Sets the VM argument line used when unit tests are run. -->
<argLine>${surefireArgLine}</argLine>
<!-- Skips unit tests if the value of skip.unit.tests property is true -->
<skipTests>${skip.unit.tests}</skipTests>
</configuration>
</plugin>
</plugins>
</build>
</project>
我也在这里跟踪这个链接,但是对于我正在使用的文件,请在这里输入链接描述。
这就是我构建测试项目的方式
mvn clean test
mvn clean verify
mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install
mvn sonar:sonar
buiild返回成功,但没有生成代码覆盖率我还通过去sonarqube检查了这一点localhost:9000/它显示0.00%的代码覆盖率,但单元测试都显示为成功“成功”。
你知道是什么导致了这个问题吗?而且,我对这一切还是新手。
从我的角度来看,设置看起来不错。
您已更改报告文件的默认名称。因此,我猜你也需要告诉声纳分析仪。
jacoco单元测试的默认名称是:< code > $ { project . build . directory }/jacoco . exec ,这也是sonar将尝试选取的名称。
您可以简单地设置一个属性来指示声纳分析器的位置:
<properties
<sonar.jacoco.reportPath>${project.build.directory}/coverage-reports/jacoco-ut.exec</sonar.jacoco.reportPath>
...
请验证您的jacco文件是否存在并且不为空 - 如果sosonor迟会在正确配置位置后拾取它。
当我运行mvn干净测试时,我希望覆盖输出被写入目标/覆盖报告,但是当我打开index.html构建后它是空的。 我检查了以下内容,jacoco.exec文件存在,其中有一组类名-在覆盖率html中有一个链接“Sessions ”,当我单击它时,我看到一组我的类似乎已经被执行-当我运行maven命令时,我没有看到错误或警告 我很困惑为什么报告是空的。从我看到的所有例子来看,这似乎应该行得通。我错过了
Jacoco 是否为 API 的集成测试提供代码覆盖率?也就是说,我有一个在本地运行的应用程序实例,并且我有集成测试,其中我命中了正在运行的应用程序实例提供的api。在这种情况下,我是否可以使用 Jacoco 来获取在集成测试运行时覆盖了多少行正在运行的应用程序实例? 我已经尝试了Jacoco的maven插件的准备代理集成和报告集成目标。但它们给出的代码覆盖率为 0。我认为这是因为jacoco只测
问题内容: 我正在尝试使用lcov为我的单元测试套件生成覆盖率报告,但是我什至无法捕获跟踪文件。错误消息表明找不到源文件。该代码由构建机器上的Jenkins作业编译,单元测试作为目标机器上的下游作业执行。源代码和gcno文件被传输到下游作业,然后下游作业执行对lcov的调用。以下是所有详细信息,可能需要一杯咖啡。 在构建机器上,执行make 我想要覆盖的源代码在以下子目录中 目标文件和gcno文件
我正在使用Jenkins Jacoco Sonarqube测试我的代码。在Jenkins中,我的mvn命令是: < code > clean org . ja coco:ja coco-maven-plugin:prepare-agent install-dmaven . test . skip = false-dmaven . test . failure . ignore = true son
我必须获得应用程序的代码覆盖率,而业务测试是从不同的代码库执行的。 我使用:Maven作为我的构建Jbehave作为我的测试框架。测试是用java编写的。 我的应用程序是部署在tomcat上的一组war文件。 应用程序代码库与测试代码库是分开的。 在获得覆盖范围时,我遵循以下步骤。 1使用maven编译测试代码。 2将应用程序类从构建位置(${app.code.dir}/目标/类)复制到${tes