Sonar使用Jacoco Givess 0%代码覆盖范围



我使用ant在Rhel6机器上运行声纳Java代码分析。对于集成测试分析,我正在为声纳使用Jacoco插件。我的库类路径中有插件。当我运行硒测试时,生成了一个" jacoco.exec"文件(大约为10个测试1MB)。然后,我在声纳蚂蚁目标中激活Jacoco插件并将其导入Sonar。Sonar分析日志说,已分析了Jacoco文件(大约5000ms)。但是,我的Sonar IT小部件显示0%的代码覆盖范围。我通过使用Cobertura成功获得了单位测试代码覆盖范围。

我的测试目标:

<taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
        <classpath path="${buildHome}/libs/jacocoant.jar"/>
    </taskdef>
    <jacoco:coverage xmlns:jacoco="antlib:org.jacoco.ant">
        <junit fork="yes" failureproperty="true" forkmode="once" maxmemory="1024m">
            <formatter type="xml" />
            <classpath refid="buildClasspath" />
            <test name="${testName}" todir="${testLogs}" if="testcase" />
            <batchtest haltonerror="false" todir="${testLogs}">
                <fileset dir="${SeleniumScripts">
                    <include name="**/*.java" />
                </fileset>
            </batchtest>
        </junit>
    </jacoco:coverage>

我的声纳蚂蚁目标:

...
<property name="sonar.sources" value="${srcCode" />
    <property name="sonar.tests" value="${testCode}" />
    <property name="sonar.binaries" value="${srcAndTestBinaries}" />
    <property name="sonar.dynamicAnalysis" value="reuseReports"/>
    <property name="sonar.surefire.reportsPath" value="${reportsPath}" />
    <property name="sonar.core.codeCoveragePlugin" value="jacoco" />
    <property name="sonar.jacoco.itReportPath" value="${jacocoCoveragePath}/jacoco.exec" />
    <!-- Add the Sonar task -->
    <taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml">
        <classpath path="${antLibPath}/sonar-ant-task-1.4.jar" />
    </taskdef>
    <sonar:sonar key="projectKey" version="1.0" xmlns:sonar="antlib:org.sonar.ant"/>

我试图仅包含"相关"的内容。我不确定" jacoco:coverage"元素是否与硒测试相关,但是在执行日志中,它提到了"代理",因此我认为该代理在此处也用作Java VM上的代理。

我被卡住了,请帮助:)

更新这是声纳输出的一部分:

[sonar:sonar] 08:36:15.619 INFO  p.PhasesTimeProfiler - Sensor JaCoCoItSensor...
[sonar:sonar] 08:36:15.623 INFO  o.s.p.j.JaCoCoPlugin - Analysing [file path omitted]jacoco.exec
[sonar:sonar] 08:36:17.272 INFO  p.PhasesTimeProfiler - Sensor JaCoCoItSensor done:     1653 ms

嗨,我也在使用jacoco生成验收测试的代码覆盖率。对于单位测试,我正在使用Cobertura,我可以在Sonar仪表板上查看代码覆盖范围和单元测试报告。

现在来获取代码封面进行接受测试。我们使用硒进行接受测试。我想知道Jacoco如何生成使用Selenium运行的接受测试的代码覆盖范围。

从我的猜测中,我认为您应该提到jacocoagent.jar而不是jacocoant.jar的路径。我也可能错了。如果您找到了一种在硒上运行的测试代码覆盖的方法,您可以提供解决方案

我可能会缺少它,但是我看不到您在哪里告诉代理商存储结果。

在我的蚂蚁脚本中,我已经知道了:

 <jacoco:coverage enabled="${my.coverage.enabled}" destfile="${test.log.dir}/jacoco.exec">

包装Junit任务。尝试定义destfile="${jacocoCoveragePath}/jacoco.exec",看看是否修复了它。

最新更新