cobertura跑单元测试覆盖率为0问题解决

cobertura跑单元测试覆盖率为0问题解决:
1.先确认cobertura:instrument阶段是成功的;

2.在pom文件&父级pom文件中查找 两个plugin:
maven-surefire-plugin:
maven是个项目管理工具,如果我们不告诉它我们的代码要使用什么样的jdk版本编译的话,它就会用maven-compiler-plugin默认的jdk版本来进行处理

确保为:<skin>false</skin>
为true时表示不执行测试用例,也不编译测试用例类

maven-compiler-plugin:
通过插件来执行JUnit或者TestNG的测试用例。这一插件就是maven-surefire-plugin,可以称之为测试运行器(Test Runner),他能很好的兼容JUnit 3、JUnit 4以及TestNG。生命周期阶段需要绑定到某个插件的目标才能完成真正的工作,test阶段正是与maven-surefire-plugin的test目标相绑定了,这是一个内置的绑定。
在默认情况下,maven-surefire-plugin的test目标会自动执行测试源码路径(默认为src/test/java/)下所有符合一组命名模式的测试类。这组模式为:
*/Test.java:任何子目录所有命名以Test开头的Java类。
**/*Test.java:任何子目录下所有命名以Test结尾的Java类。
**/*TestCase.java:任何子目录下所有命名以TestCase结尾的Java类

确保为:<skin>false</skin>
为true时表示不执行测试用例

再次运行cobertura:cobertura时发现日志中已经有了test的编译和运行信息:

[INFO] --- maven-surefire-plugin:2.7.2:test (default-test) @ ticketDubbo-internet --- 
[INFO] Surefire report directory: E:\migumusic\ecosp-ticket-center-internet\ticketDubbo-internet\target\surefire-reports 
------------------------------------------------------- 
 T E S T S 
------------------------------------------------------- 
Running com.sitech.miso.ecosp.ticketdubbo.core.biz.OrderBizImplTest 

*可能会遇到java.lang.VerifyError: Inconsistent stackmap frames at branch target的错误
jvm参数 :java.lang.VerifyError: Inconsistent stackmap frames at branch target ?
原因-PowerMock中为支持对构造函数的测试,借助于Javassist实现对字节码的操作。但是从Java 6开始引入的Stack Map Frames特性与Javassist不兼容。在Java 6中该Stack Map Frames还是可选的。但是到了Java 7,该Stackmap Frames已经是默认使用的,所以不兼容问题导致了该异常。
修改JVM 参数:-XX:-UseSplitVerifier
:直接修改maven-surefire-plugin插件的配置参数,搜索了很久终于找到,在pom的配置中加入:

<argLine>-XX:-UseSplitVerifier</argLine>
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值