Cobertura Instrumentation



我正试图让Cobertura使用我的Ant构建,特别是希望它能为我的单元测试提供一份覆盖率报告。我使用以下目录结构:

src/main/java --> main source root
src/test/java --> test source root
bin/main --> where main source compiles to
bin/test --> where test source compiles to
gen/cobertura --> cobertura root
gen/cobertura/instrumented --> where "instrumented" class will be copied to

我对Cobertura(,如果我错了,请纠正我!!)的理解是,它将字节码添加到已编译的类中(也称为"插入"),然后基于注入/编织的字节码运行报告。

因此,我的问题是,如果Cobertura更改了类的字节码及其检测,我应该在<cobertura:instrument>之前或之后在测试源上运行JUnit吗?为什么

Cobertura插入编译类的字节码是正确的。您通常希望将测试源排除在覆盖率分析之外,因为测试类实际上是生成覆盖率的驱动程序。Cobertura提供的基本示例build.xml在调用Cobertura仪器时提供了一个很好的示例:

        <cobertura-instrument todir="${instrumented.dir}">
        <!--
            The following line causes instrument to ignore any
            source line containing a reference to log4j, for the
            purposes of coverage reporting.
        -->
        <ignore regex="org.apache.log4j.*" />
        <fileset dir="${classes.dir}">
            <!--
                Instrument all the application classes, but
                don't instrument the test classes.
            -->
            <include name="**/*.class" />
            <exclude name="**/*Test.class" />
        </fileset>
    </cobertura-instrument>
</target>

这里的exclude元素排除了所有名称中带有"Test"的类。

下面是一个如何将Cobertura ANT任务与Junit结合使用以生成代码覆盖率报告的工作示例

SONAR-使用Cobertura 测量代码覆盖率

相关内容

  • 没有找到相关文章

最新更新