我正在使用蚂蚁,雅各布和声纳。当我运行我的构建时,Sonar 告诉我“没有关于每个测试的覆盖率的信息”,Sonar 仪表板上有我的覆盖率结果,但我无法向下钻取它们以查看代码。但是,Jacoco 生成的 HTML 报告确实包括向下钻取代码。这是我的覆盖任务:
<jacoco:coverage destfile="${coverage.output.file}" >
<junit printsummary="on"
errorProperty="test.failed"
failureProperty="test.failed"
haltonfailure="yes"
fork="true">
<formatter type="brief" usefile="false" />
<formatter type="xml" />
<classpath>
<path refid="test.build.class.path"/>
<pathelement location="${test.bin.dir}"/>
</classpath>
<batchtest todir="${results.dir}">
<fileset dir="${test.bin.dir}">
<include name = "**/**/*Test.class"/>
</fileset>
</batchtest>
</junit>
</jacoco:coverage>
<jacoco:report>
<executiondata>
<file file="${coverage.output.file}"/>
</executiondata>
<structure name="${ant.project.name}">
<classfiles>
<fileset dir="${bin.dir}"/>
</classfiles>
<sourcefiles encoding="UTF-8">
<fileset dir="${src.dir}"/>
</sourcefiles>
</structure>
<html destdir="${coverage.results.dir}"/>
</jacoco:report>
</target>
我的声纳目标看起来像这样:
<target name="sonar" depends = "run">
<property name="sonar.jdbc.url" value="..." />
<property name="sonar.jdbc.username" value="...r" />
<property name="sonar.jdbc.password" value="..." />
<property name="sonar.projectKey" value="org.codehaus.sonar:example-java-ant" />
<property name="sonar.projectName" value="${ant.project.name} (ant)" />
<property name="sonar.projectVersion" value="1.0" />
<property name="sonar.language" value="java" />
<property name="sonar.sources" value="${src.dir}" />
<property name="sonar.binaries" value="${bin.dir},${test.bin.dir}" />
<property name="sonar.libraries" value="${lib.dir}/*.jar" />
<property name="sonar.dynamicAnalysis" value="reuseReports" />
<property name="sonar.surefire.reportsPath" value="${results.dir}" />
<property name="sonar.java.coveragePlugin" value="jacoco" />
<property name="sonar.jacoco.reportPath" value="${coverage.output.file}" />
<taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml">
<classpath>
<fileset dir="${lib.dir}" includes="sonar-ant-task-2.0.jar"/>
</classpath>
</taskdef>
<sonar:sonar />
</target>
有谁知道我错过了什么?
sonar.test
属性应该设置为测试类。我们的maven pom中有以下内容。对于ANT,您可以执行类似的操作:
<profile>
<id>sonarprofile</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.host.url>....our host..../sonar.host.url>
<sonar.projectKey>....our key....</sonar.projectKey>
<sonar.projectName>${project.artifactId}</sonar.projectName>
<sonar.projectVersion>${project.version}</sonar.projectVersion>
<sonar.language>java</sonar.language>
<sonar.sources>src/main/java</sonar.sources>
<!-- sonar.tests>target/test-classes</sonar.tests -->
<!-- that is the default location for Maven projects and -->
<!-- this parameter can't actually be set in that case -->
<sonar.scm.provider>git</sonar.scm.provider>
<sonar.login>${SONAR_LOGIN}</sonar.login>
<sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
<sonar.jacoco.reportPath>${basedir}/target/coverage-reports/jacoco-unit.exec</sonar.jacoco.reportPath>
</properties>
</profile>
偶然地,这里还使用了一些其他属性:
“哈科专家”插件
单独生成的,而声纳.jaco.reportPath
是该插件中使用的属性。大卫·拉科顿的回答(https://stackoverflow.com/a/16645108/1019307)曾经是正确的,但在2014年年中,SonarQube停止执行测试,作为sonar执行的一部分(http://www.sonarqube.org/unit-test-execution-in-sonarqube/). 因此,指向测试源不再有效。
看起来您还没有设置“sonar.tests”属性来告诉 Sonar 在哪里可以找到单元测试的源代码。请参见 http://docs.sonarqube.org/display/SONAR/Analysis 参数。
大卫·拉科东
我使用JaCoCo进行代码覆盖。单元测试报告是用junit创建的,它们被正确地导入,因此单元测试信息被正确地显示出来。问题是,我得到了错误消息:没有关于每个测试覆盖率的信息。代码覆盖率显示单元测试、集成测试和整体覆盖率的值为0%。我检查了sonar项目中所有需要的信息,如二进制、src、测试等属性。 我使用的是:<br>-SonarQube 4.5.1<br>-SonarRunner 2.4<br
我正在尝试使用Sonarqube 7获得每个测试功能的覆盖范围。 我正在使用Jacoco-maven-plugin,我的测试正在使用JUnit 5运行。 我成功地在Sonarqube dashboard上获得了全局覆盖,但是我想更深入地了解哪些测试覆盖了我的类的哪些行。 我已经尝试了这里给定的配置,但是没有成功:我在日志中得到下面的消息“没有关于每个测试覆盖率的信息”。我看到这可以通过添加一个监听
同时尝试执行声纳以导入jacoco it。使用JacoAgent在服务器上生成的exec文件。jar,我得到以下消息: [信息][09:54:32.420] 传感器传感器[信息][09:54:32.462]分析/詹金斯/乔布斯/..[信息] [09:54:51.385] 没有关于每个测试的覆盖率的信息。 我已经验证了jacococ-it.exec文件本身确实包含数据(385 MB ),所以它肯定是
我很难设置我的项目,以便SonarQube报告每个测试的测试覆盖率。 在声纳扫描仪的分析过程中,我只看到 在读取了JaCoCo执行数据之后。 这工作的要求是什么?显示每个测试覆盖范围的最小示例的外观如何。 我当前的环境如下所示: 声纳奎比 6.4 索纳贾瓦 4.12.0 声纳扫描仪 3.0.3 日食霓虹灯 埃克莱艾玛 3.0.0/雅可 0.7.9 我的测试项目如下所示: 如您所见,每个测试都存在执
11.3. 测试覆盖率 就其性质而言,测试不可能是完整的。计算机科学家Edsger Dijkstra曾说过:“测试能证明缺陷存在,而无法证明没有缺陷。”再多的测试也不能证明一个程序没有BUG。在最好的情况下,测试可以增强我们的信心:代码在很多重要场景下是可以正常工作的。 对待测程序执行的测试的程度称为测试的覆盖率。测试覆盖率并不能量化——即使最简单的程序的动态也是难以精确测量的——但是有启发式方法
我面临以下问题, [错误]无法在项目 Vsts 上执行目标组织 apache.maven.plugins:maven-antrun-plugin:1.8:run(默认):发生蚂蚁构建异常:创建报告时出错 [ERROR]关于Ant部件……@8:11 in/__w/49/s/target/antrun/build main。xml:分析myapp/target时出错/demo.war@WEB-INF/