JaCoCo覆盖率报告设置(不包括测试类)

时间:2015-04-17 15:01:11

标签: java ant jacoco

使用以下目标生成jacoco覆盖率报告:

   <target name="report" depends="test">

            <!-- This task needs the collected execution data and ... -->
            <executiondata>
                <file file="${result.exec.file}" />
            </executiondata>

            <!-- the class files and optional source files ... -->
            <structure name="JaCoCo Ant Example">
                <classfiles>
                    <fileset dir="${result.classes.dir}" />
                </classfiles>
                <sourcefiles encoding="UTF-8">
                    <fileset dir="${src.dir}" >
                    <exclude name="**/*Test*.class"/>
                    </fileset>  
                </sourcefiles>
            </structure>

            <!-- to produce reports in different formats. -->
            <html destdir="${result.report.dir}" />
            <csv destfile="${result.report.dir}/report.csv" />
            <xml destfile="${result.report.dir}/report.xml" />
        </jacoco:report>
    </target>

问题在于报告考虑了单元测试的代码,我认为这是一个错误。这样,您的线路覆盖百分比和指令覆盖率将被人为增加(因为测试线被视为100%覆盖)并且报告的正确性受到很大影响。我试着添加这个标签

<exclude name="**/*Test*.class"/

在fileset标签下,希望排除testClasses,但它不起作用。你对我的问题有什么想法吗?我想以编程方式避免 报告修改。 谢谢!

1 个答案:

答案 0 :(得分:3)

您需要从classfiles文件集中排除Test类文件:

<structure name="JaCoCo Ant Example">
        <classfiles>
            <fileset dir="${result.classes.dir}">
                <exclude name="**/*Test*.class"/>
            </fileset>
        </classfiles>
        <sourcefiles encoding="UTF-8">
            <fileset dir="${src.dir}" />
        </sourcefiles>
</structure>

请参阅documentation

  

“请注意,classfiles和sourcefiles元素接受任何Ant资源集合。因此,也可以过滤类文件集,允许缩小报告的范围,例如:

<classfiles>
    <fileset dir="classes">
        <include name="org/jacoco/examples/important/**/*.class"/>
    </fileset>
</classfiles> 

这是因为实际报告是从classfiles完成的。 sourcefiles在报告中包含突出显示的源代码 - 当然,人眼无法读取已编译的代码。

再次来自文档:

  

classfiles :Ant资源和资源的容器元素      可以指定Java类文件,存档文件的集合(jar,      war,ear等或Pack200)或包含类文件的文件夹。档案      和文件夹以递归方式搜索类文件。

     

<强> sourcefiles :       Ant资源和资源集合的可选容器元素      指定相应的源文件。如果源文件是      指定,某些报告格式包含突出显示的源代码。      源文件可以指定为单个文件或源      目录。