Clover:解决 Java8 和 Cobertura 的问题以及解决方法

用户头像
陈磊@Criss
关注
发布于: 2020 年 08 月 12 日

Clover:解决Java8和Cobertura的问题以及解决方法



最近在使用EvoSuite和Cobertura的时候,Cobertura报错最后的代码覆盖报告什么都没有。发现问题的第一反应就是Cobertura和Jacoco一样了吗?难道也是字节码注入的问题?但是我的其他的项目并没有出现问题,这样我又回到了原来的正确解决而问题的轨道上。



解决思路



有一个项目的小伙伴反馈我们一直在使用的智能测试框架EvoSuite哑火了,我也感到莫名其妙。为什么呢,因为我们已经在内部很多项目在使用这个框架了,为什么这个框架在这里不行了呢?我马上找到项目的master,要了项目的git权限。从自动生成单元测试导致执行测试全部尝试了一遍,发现问题并不是在执行evosuit的时候出现新,而是在执行测试覆盖插件的时候出现的,下面是出错信息。



INFO: Cobertura: Loaded information on 0 classes.

........

INFO: Cobertura: Saved information on 0 classes.



第一次遇见,我赶紧去google上查找了一下,发现Cobertura和Java8就是会有这个问题,网络上的方法全部尝试了一遍,比如升级这个插件的版本等根本解决不了问题。



最后的解决办法是换到了代码覆盖的工具,代替工具是Clover。



Clover



Clover是一款曾经收费的代码覆盖率查询插件,它可以配合JUnit等测试插件,对代码测试结果进行分析说明。就冲着曾经还收费这个事情应该还是很有优势的。



开源地址:https://bitbucket.org/atlassian/clover



在Mvn中引入如下配置:



<build>

<plugins>

<plugin>

<groupId>com.atlassian.maven.plugins</groupId>

<artifactId>clover-maven-plugin</artifactId>

<version>4.1.2</version>

<configuration>

<excludes>

<exclude>*/_ESTest.java</exclude>

<exclude>*/ESTestscaffolding.java</exclude>

</excludes>

</configuration>

</plugin>

</plugins>

</build>



然后使用mvn clover:setup test clover:aggregate clover:clover就可以获得单元测试代码覆盖报告了。



发布于: 2020 年 08 月 12 日 阅读数: 29
用户头像

陈磊@Criss

关注

测者观天下bugs 2018.03.11 加入

华为云MVP,阿里云MVP

评论

发布
暂无评论
Clover:解决Java8和Cobertura的问题以及解决方法