精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
作者 | 正文 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
发表时间:2009-07-23
最后修改:2009-07-23
emma是一个统计代码测试覆盖率的工具,teamcity默认集成了这个工具。
要teamcity支持代码覆盖率,首先应该在teamcity控制台上设置如下:
1.向.class文件插入字节码,并生成metadata文件.em,这一步是在ant 执行javac时完成. 2.执行单元测试或集成测试,会生成运行过的采集文件.ec. 3.通过report,联合这两个文件来生成覆盖率报告.
现在的问题是集成测试的.ec如何merge到单元测试的.ec???
因为我用teamcity,单元测试的.ec默认路径是/opt/ci/teamcity4.5.4/buildAgent/work/xxxxx/下面. 解决的办法就是在启动weblogic的时候,将emma.jar放入classpath中,同时设定 -Demma.coverage.out.file=/opt/ci/teamcity4.5.4/buildAgent/work/xxxxx/coverage.ec -Demma.coverage.out.merge=true 这样就将集成测试的运行类采集merge到了单元测试的运行类采集文件中.最后teamcity通过emma report根据这两个文件来创建最终的代码覆盖率报告.
所以要merge解决问题的ant脚本做法如下: <target name="startup">
下面是生成的覆盖率报告: OVERALL COVERAGE SUMMARY
OVERALL STATS SUMMARY
COVERAGE BREAKDOWN BY PACKAGE
注意:集成测试所运行的.class必须是metadata文件中所描述的.class,否则报CLASS_STAMP_MISMATCH Error。 这个问题产生的原因是metadata在javac相同的.class时,后面的覆盖前面的。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
返回顶楼 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
浏览 3058 次