本文主要是介绍maven+cobertura+ant跨模块单测覆盖率统计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
cobertura是统计单测覆盖率的工具,但是一般不会使用到ant一起统计。
--父pom.xml
----web
--pom.xml
---service
--pom.xml
maven+cobertura+ant使用场景:当应用是这样设计的,web应用、service应用,controller接口在web应用中,service仅仅作为web的jar包依赖,单测却写在web下,springboot启动类在web下。maven+cobertura使用统计覆盖率却始终未0,可明明有单测啊。
为了查明原因,特意百度了下cobertura的使用,得出结论:web和service生产的classes文件在2个不同的target下,web下的类引用不到service的,web对service maven依赖也不行。
这就要用到ant了,ant的作用是比较灵活的,具体是什么作用问度娘(为了节约时间,这里就不那么详细说了),
如何使用ant解决?
参考http://blog.csdn.net/shymi1991/article/details/52849947
注意:
1. build.xml中<property name="COBERTURA_HOME" value="/Users/tsu/java/cobertura-1.9.4.1"/>
COBERTURA_HOME 是指单独下载的cobertura,而非maven依赖下的jar包。(所以这里需要单独下载cobertura)
2. 使用intelij时会发生执行命令不成功,那么就换到命令终端里执行。
3. 一般的ide中都集成了ant插件,如果没集成则需要自己下载一个,http://org.apache.com/。(下载到本地,过程和下载maven类似)
4. 配置完需要重新编译。
5. 若执行ant instrument时报错,提示主类找不到(我用的是springboot,因此这里的主类是指springboot启动类),这时需要解决某些包的冲突问题,
比如我遇到的是cobertura的日志配置和我当前应用的日志配置是冲突的,那么我在web的pom.xml中配置cobertura时添加<exclude>标签将cobertura的日志配置排除掉。
6.注意线上执行单测统计覆盖率时,需要检查线上环境是否支持ant和存在cobertura的配置。
这篇关于maven+cobertura+ant跨模块单测覆盖率统计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!