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

2020-06-11 17:29:57 浏览数 (1)

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

解决思路

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

代码语言:javascript复制
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中引入如下配置:

代码语言:javascript复制
<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>**/*_ESTest_scaffolding.java</exclude>
        </excludes>
        </configuration>
    </plugin>
    </plugins>
</build>

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

0 人点赞