我刚刚开始将Cobertura集成到我们主要产品的构建过程中,该过程使用Ivy作为依赖项管理工具。有几个库lib-a
,lib-b
和lib-c
没有测试用例和一个依赖于这些库的项目,并包含所有这些库的单元和集成测试。如何让Cobertura和Ivy一起工作?
一般来说,仪表,运行仪表测试和生成Cobertura报告都有效。但是,有几个问题:
在仪器仪表,有几个警告(约10)报道:
Problems instrumenting archive entry: a.b.c.MyClassFoo java.lang.RuntimeException: java.lang.ClassNotFoundException: a.b.c.MyClassBar
然而,报道类exisiting。在仪器的结束,它报告
Saved information on 364 classes
- 当查看报告,它显示了所有的类,但依赖库的所有类都报告为0%的覆盖率。
- 查看详细信息时,它会报告找不到任何来源。
现在我想问题可能是,是的Cobertura与 问题 - 插装的JAR文件和 提供的类文件 - 获取源从jar文件
该仪器ant任务在我的构建。 XML执行以下操作:
<cobertura-instrument todir="${build.dir}/instrumented-classes">
<includeClasses regex="com\.mycompany.*" />
<instrumentationClasspath>
<path refid="default.test.classpath" />
<pathelement location="${build.classes.dir}" />
</instrumentationClasspath>
</cobertura-instrument>
如果这是足够了吗?
林不知道,因为报告的警告。所有报道的课程都可以在罐子里找到。
对于第二个问题,我甚至不知道如何提供来源罐子的Cobertura报告...
我试图
<cobertura-report destdir="${build.dir}/coverage">
<fileset dir="${src.dir}">
<include name="**/*.java" />
</fileset>
<ivy:cachefileset conf="runtime-test" type="sources"/>
</cobertura-report>
,但它说的是不支持cachefileset
。我也尝试使用pathid
,我也不能在cobertura-report
中提供。 我是否必须先解压所有来源(这将非常耗时),然后将它们作为正常的fileset
提供?