jacoco在使用蚂蚁时不排除课程

时间:2013-01-18 17:58:15

标签: jacoco

我无法获得jacoco / junit ant目标来排除覆盖范围内的类。我可以通过这样的方式来排除包裹:

<jacoco:coverage destfile="${coverage.reports.dir.xml}/output.jacoco" excludes="foo.*:bar.fiz.*:my.long.package.name.*">

这并不排除我的测试类,因为测试类与它们测试的类在同一个包中。我已经厌倦了用正则表达式排除测试类,但它不起作用。

<jacoco:coverage destfile="${coverage.reports.dir.xml}/output.jacoco" excludes="foo.*:bar.fiz.*:**/Test.*:**/Tests.*">

我还尝试在报告任务中包含我想要的类,但是因为我们的测试类位于不起作用的相同包中。我们的构建将所有类放在同一目录中,例如buildRoot / classes / ProjectName。因此buildRoot / classes / ProjectName / foo将包含测试和非测试类的已编译类。

有关如何让jacoco排除此设置中的所有测试的任何建议吗?

感谢。

1 个答案:

答案 0 :(得分:21)

使用jacoco:coverage指定类会将其排除在覆盖范围之外,因此它们在报告中显示为0%覆盖率。

为了从JaCoCo报告中排除这些类,您需要使用classfiles文件集任务并将其排除在jacoco:report ant任务中。

<jacoco:report>
  <executiondata>
    <file file="${coverage.reports.dir.xml}/merged-jacoco.exec"/>
  </executiondata>
  <structure name="Unit Tests ${unit.test.run.ts}">
    <classfiles>
      <fileset dir="${build.root}/classes/ProjectName/" >
        <exclude name="**/*Test*.class" />
      </fileset>
    </classfiles>
    <sourcefiles encoding="UTF-8">
      <fileset dir="${src.root}/ProjectName/src/main"/>
    </sourcefiles>
  </structure>

  <html destdir="${coverage.reports.dir.html}"/>
</jacoco:report>