我在构建上运行JUnits。构建包括产品的jar。我们希望在jar中的类上运行代码覆盖。我们有未混淆的罐子。我们有如下脚本
<target name="codeCoverageReport">
<jacoco:report>
<executiondata>
<file file="${codecoverage.file}"/>
</executiondata>
<structure name="eQ Adapter And Plug-ins Code Coverage Report ">
<classfiles>
<fileset dir="${classes}">
<include name="**/*.class" />
</fileset>
<fileset dir="${pluginJars}">
<include name="*.jar" />
</fileset>
</classfiles>
<sourcefiles encoding="UTF-8">
<fileset dir="${sourceDrive}/src"/>
</sourcefiles>
</structure>
<html destdir="${codecoverage.reports}"/>
<csv destfile="${codecoverage.reports}/report.csv"/>
<xml destfile="${codecoverage.reports}/report.xml"/>
</jacoco:report>
</target>
<jacoco:coverage enabled="true" destfile="${codecoverage.file}" append="true" includes="**/*.class" >
<junit printsummary="yes" failureproperty="junit.failed" haltonfailure="no" fork="true" forkmode="once" maxmemory="2048m">
<classpath refid="test.classpath" />
<formatter type="xml" />
<batchtest todir="${reports.dir}/tmp">
<fileset dir="${src}">
<include name="**/${testFileSet}" />
</fileset>
</batchtest>
</junit>
</jacoco:coverage>
我们也试过
<target name="codeCoverageReport">
<jacoco:report>
<executiondata>
<file file="${codecoverage.file}"/>
</executiondata>
<structure name="eQ Adapter And Plug-ins Code Coverage Report ">
<classfiles>
<fileset dir="${classes}">
<include name="**/*.class" />
</fileset>
</classfiles>
<sourcefiles encoding="UTF-8">
<fileset dir="${sourceDrive}/src"/>
<fileset dir="${pluginJars}">
<include name="*.jar" />
</fileset>
</sourcefiles>
</structure>
<html destdir="${codecoverage.reports}"/>
<csv destfile="${codecoverage.reports}/report.csv"/>
<xml destfile="${codecoverage.reports}/report.xml"/>
</jacoco:report>
</target>
但是Ant显示如下错误
错误在创建报告
如果没有Jar路径,它可以正常工作。但是它不包括来自jar的类。
当您在报告中包含jar文件时,我注意到您正在使用sourcefiles
标记
<fileset dir="${pluginJars}">
<include name="*.jar" />
</fileset>
我建议你试试这个
<fileset file="${pluginJars}/*.jar"/>
我遇到了同样的问题,并设法通过将目录attribute
更改为file
来获得一切工作。