ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2020-01-21 11:41:21  阅读:589  来源: 互联网

标签:Java plugin 覆盖率 cobertura surefire 单元测试 maven test java


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有