今天在做Lab2实验的时候,发现需要测试代码覆盖率,Eclipse上可以使用插件EclEmma,但是由于本人用的IDEA(个人觉得IDEA太香啦!),然后又发现IDEA有自带的测试代码覆盖度的功能
就是这个!(对于我这个懒癌患者来说真是太舒服了,但是没想到后面的事才是真坑!)
我拿一个Lab1的测试代码,想试试这个功能,没想到直接给我来了一大堆报错???(黑人问号.jpg)
就是这样的报错!!之后我就上网寻找解决办法,找了一会发现了个这个办法
参考
IDEA 上 使用Junit+Coverage(覆盖率)报错_menduo的博客-CSDN博客
就是修改根目录下的vmoptions文件(需要看自己的IDEA是idea.exe还是idea64.exe,修改自己对应的其文件)
“记事本打开最后加入一行
-Djava.io.tmpdir=F:\Temp
,这里要注意
F:\Temp
是随意写的目录,但一定要保证它存在。然后重新启动IDEA”
我按照他的方法修改了,但是没用。我就去找其它方法(
个人猜想
可能是IDEA的版本不同,导致上面博主的方法失效)
在网上看到还可以用JaCoCo,我就又尝试了一下这个方法,但是仍然有报错!!
java.io.FileNotFoundException: C:\Users\¼ÖÊ:À\.IntelliJIdea2019.3\system\coverage\SoftwareConstruction$TurtleSoupTest.exec (文件名、目录名或卷标语法不正确。)
之后我看到似乎是因为我在当初设置windows用户名的时候设置成我自己的名字了,我是在一条评论底下看见一个老哥说的JaCoCo会在C盘文件目录下创建一下东西,但是用户名是中文的话就会报错,这位老哥说他之后重装系统了(我一看,好家伙,我还是找其他法子吧,至于这个JaCoCo为什么会报错,到底是不是用户名是中文的原因,我也不太清楚,也希望如果有大佬看见能解答一下!感谢!)
之后我就想用Emma
(IDEA:没想到吧,我又报错了)我真是欲哭无泪啊,这个Emma插件好像会导致JDK7报错,系统建议咱用IDEA coverage runner(咱也不知道JDK11有没有解决)我也就没继续深究这个方法了
功夫不负有心人!终于在我的一顿狂找之下,发现了下面这个解决方法
IDEA 单元测试Junit Coverage报错_野狼飞飞的博客-CSDN博客
在Help -> Edit Customer VM Option里面修改
在最后一行加上
-Djava.io.tmpdir=D:\Java\Temp
D:\Java\Temp这个目录估计也是任意,但是要确保存在
重启IDEA,我发现终于可以用啦!!!
希望这篇博客可以帮助到有需要的人!也感谢上面两位博主的分享!同时如果有什么其它的方法欢迎大家提出!
而使用Emma和JaCoCo
会
分别出现不显示内容和
报错
的情况。当时是在同学的电脑上跑了测试后没有问题,说明问题在我这台机器上。实验上交之后我也尝试过重新去测试,但是还是老问题,这期间我也按照官方手册上的要求一模一样的去配置,也尝试了各种解决方案,都没有解决。
之后我在玩地平线4的时候遇到了闪退的情况,一查发现是因为系统用户名是中文的缘故,然
正常情况下,测试类所在包结构与被测试的类所在包结构相同,直接点击run tests with coverage就可以运行测试查看
覆盖率
。若包结构不同,但是你有没有权限修改该项目的包结构,那么可以通过配置来查看单测
覆盖率
。
步骤如下:
2.在上面一栏中,点击右侧+号,就可以添加要查看
覆盖
的包或者某一个类,然后点击OK退出。
3.至此,再次点击run test with Coverage就可...
Eclipse - Help - Eclipse Marketplace - search EclEmma。点击Installed。
当下面红条消失,即安装完毕。可在Installed中查看已安装插件。点击Uninstall即可卸载。
安装完毕后,运行项目时,右击要运行的
java
文件,不执行run as,执行Coverage as。之后,
会
发现代码高亮,并出现一个新的Coverage窗口可查看
覆盖率
。如图。
取消颜色高亮很简单,点击Coverage窗口的“x”即可。
安装Coverage插件,通过插件可以在IDE中展示被测代码的
覆盖
情况,配置路径为IntelliJ IDE -> Preferences -> Plugins,搜索Coverage并安装
安装后就可以点击测试用例运行时选择Run with Coverage,或者右键测试类选择Run with Coverage
配置路径 IntelliJ IDE.
摘要之前用
idea
写junit 查看
代码覆盖率
的时候遇到的问题.
java
.lang.reflect.InvocationTargetException…FATAL ERROR in...
注意点:Replace active suites 选项可以解决,如果问题1和问题2都设置成功后,依旧显示灰色界面问题。3、选择以coverge runner结尾的选项,不同版本可能不同。一般选择 Add to active suites生成报告。1、打开Run/Debug Configurations。问题1:界面没有Code Coverge。可以看到生成Branch选项了。5、选择Use tracing。问题3: 生成报告是灰色。2、选中该工程的项目()2、选项(根据需要设置)4、设置branch。
报错
信息:
D:\resource\
java
_jdk_1.8.261\bin\
java
.exe -ea -
java
agent:C:\Users\镜\AppData\Local\JetBrains\IntelliJ
Idea
2020.2\testAgent\intellij-coverage-agent-1.0.512.jar=C:\Users\镜\AppData\Local\Temp\coverage10args -D
idea
.test.cyclic.buffer.size=1048576 "-jav...
比如上面
报错
apache-tomcat-8.0.18/webapps/ROOT/WEB-INF/lib/lombok-1.18.26.jar!-info.class问题得以解决。只不过并不是去maven仓库里找jar包,而是去WEB-INF下的lib中找到对应的jar包,删除module-info.class即可。有时可能还
会
遇到apache-tomcat-8.0.18/webapps/ROOT/WEB-INF/lib/log4j-api-2.10.0.jar的
报错
。这时就要去删除jar包中。