每个(不同)输入数据的代码覆盖率

时间:2019-07-30 10:14:09

标签: java code-coverage jacoco jacoco-maven-plugin

我想获得一些简单测试的代码覆盖率,该测试从DataProvider获取数据。我需要通过测试的每个数据的覆盖率结果。例如:

if (value != 0)
{
   //do something
}

if (value == 100) {
   //do something
}
   //else do something

如果测试从DataProvider获得的值类似于0,则它永远不会到达代码的第一部分,因此覆盖率结果不同于值100。 那我如何获得每个数据的覆盖率结果?我正在将jacoco与maven插件配合使用...

如果有可能使用maven运行子测试,这可能会有所帮助...当前,我正在这样做:

mvn test

但是我想做这样的事情:

mvn -Dtest=myTestClass#myTest#myData (#myData of course not working)

但是IntelliJ使用此参数指定子测试:

java.exe -ea [.......] @name0 //-> to run the test only with first Data
java.exe -ea [.......] @name1 //-> to run the test only with second Data
etc.

谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

代码覆盖率是自动测试覆盖的代码百分比。代码覆盖率度量只是确定代码主体中的哪些语句已通过测试运行执行,而哪些语句尚未执行。 https://confluence.atlassian.com/clover/about-code-coverage-71599496.html

您可以从命令行传递参数,然后运行测试。 您可以像这样在命令行上传递它们

mvn test -Dtest=<ClassName> -Dvalue=100

然后使用

在测试中访问它们
int value=Integer.valueOf(System.getProperty("value"));