其他分享
首页 > 其他分享> > cobertura跑单元测试覆盖率为0问题解决

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>
德布劳内白白 发布了9 篇原创文章 · 获赞 2 · 访问量 300 私信 关注

标签:Java,plugin,覆盖率,cobertura,surefire,单元测试,maven,test,java
来源: https://blog.csdn.net/weixin_43472776/article/details/104059937