当前位置: 首页 > 知识库问答 >
问题:

使用JaCoCo对其进行声纳,代码覆盖率为0%

公西宏毅
2023-03-14

我正在使用Ant在RHEL6机器上运行Sonar Java代码分析。对于集成测试分析,我使用JaCoCo sonar插件。我的库类路径中有插件。当我运行Selenium测试时,会生成一个“jacoco.exec”文件(10个测试大约1MB)。然后在我的Sonar Ant目标中激活Jacoco插件,并将其导入Sonar。声纳分析日志显示,已对Jacoco文件进行了分析(耗时约5000毫秒)。然而,我的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”元素是否适用于Selenium测试,但在执行日志中它提到了“代理”,因此我假设代理在这里也用作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

共有2个答案

洪伟彦
2023-03-14

我可能错过了,但我不知道你在哪里告诉代理把结果存储在哪里。

在我的蚂蚁脚本中,我有这样一个:

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

包装junit任务。尝试定义destfile=“${jacocococoveragepath}/jacoco.exec”,看看这是否能解决问题。

山阳辉
2023-03-14

嗨,我也在使用jacoco为验收测试生成代码覆盖率的过程中。对于单元测试,我使用的是cobertura,我能够在sonar仪表板上看到代码覆盖率和单元测试报告。

现在来获取验收测试的代码covergae。我们使用selenium运行验收测试。我想知道jacoco如何为使用selenium运行的验收测试生成代码覆盖率。

根据我的猜测,我认为你应该提到jacocoagent的路径。jar而不是JACOCONT。罐子我也可能错了。如果您已经找到了一种为在selenium上运行的测试生成代码覆盖率的方法,您可以提供解决方案吗

 类似资料:
  • 我正在使用: 声纳v.3.2(有jacoco) Maven 3.0.4 跟随”http://johndobie.blogspot.in/2012/05/easy-unit-and-integration-code-coverage.html#comment-表格“以获得单元的单独代码覆盖率 日志显示如下: POM文件:

  • 我正在尝试使用JaCoCo-javaagent传递VM参数来获得代码覆盖率 -Java agent:/test/jaco co/jaco agent . jar = dest file =/test/jaco co/jaco co . exec,includes=com。*,append=true 我能在jacoco中获得一些价值。执行文件,但无法获取覆盖率报告。我怎样才能把jacoco转化成。执

  • 我在声纳中的代码覆盖率显示为0%,这不是真的,因为我有单元测试。 格拉德尔 当我打开inside然后我可以看到成功的单元测试。 我在Jenkins环境中运行作为

  • 我正在尝试集成Jacoco,以便使用Maven获得Cucumber测试的代码覆盖率。以下是我的项目结构: > -src主java页面 -src主java助手 -src-测试-java-资源-功能 -src测试java步骤 以下是我的POM中的Jacoco配置。xml 我能够生成代码覆盖率报告。但是,在报告中,它涵盖了-src主包中的所有类。根据不同的google搜索和SO帖子,我试图修改POM以排

  • 我正在使用Jacoco插件使用jenkins获得代码覆盖率。我能够看到代码覆盖率。当我尝试使用相同的jacoco.exec文件来生成声纳代码覆盖率时,它显示:由于没有类文件,无法对项目覆盖率进行JaCoCo分析。我使用以下声纳属性: 我正在使用SonarQube 5.3

  • 我的代码运行在具有单独JVM的单独虚拟机上。我想在此虚拟机上以tcpserver模式设置JaCoCo代理以收集覆盖率数据。然后,我将在我的maven项目中以tcpclient模式设置JaCoCo代理,以连接到上面提到的VM并获取覆盖率数据。 问题是代理不收集任何覆盖数据。在中创建了覆盖率数据文件,但该文件为空。 下面是代理选项:-Java agent:/usr/xx/plugins/org . j