2015-06-19 161 views
1

我有一个测试类,它有一堆测试用例。我怎样才能获得代码覆盖率在Java中的单个测试

我想测量课堂上单个测试用例的覆盖范围。

有没有什么办法可以得到一个报告来映射测试用例和覆盖率。

+0

你想测量什么,确切地说?每个单独测试涵盖的整个生产代码库的百分比? (但是,那是什么意思?)或者是其他的东西? –

+0

我想知道prod代码库中单个测试用例所涵盖的类或方法。我的目的不是衡量覆盖面。 –

+0

您可以始终运行单个测试用例,然后检查由其生成的覆盖率报告。但是可能你会想要一次运行整个测试套件。据我所知,现有的用于Java的代码覆盖工具没有提供现成的这种功能(Ira的答案的解决方案似乎需要来自用户的一些编码,所以我不计算它)。我并不真正了解这个需求,所以我不能说这个功能是否值得在一个工具中使用。 –

回答

-1

你试过三叶草Clover

我知道这不是免费的,但它应该给你你需要什么。

0

我们SD Java Test Coverage工具可以给你这个数据。

此工具增加了一类特殊的TCV与测试方法的程序:

TCV.reset(); // resets the test coverage vector 
    TCV.dump(); // writes vector to file 
    TCV.setBaseName(String); // record vector file name prefix 

如果在应用程序调用转储功能,测试覆盖率矢量转储到以当前日期和时间以及指定的文件提供的BaseName。

您可以使用这些修改测试执行框架,不管是什么,只要稍微获得特定的测试向量。你在哪里都调用第N个测试用例,添加通话转储:

TCV.reset(); // marks everything as "not executed" 
    tests.nthTestCase(); 
    TCV.setBaseName("nthTestCase"); 
    TCV.dump(); 

这将产生覆盖只是由nTestCase执行的代码时间标记载体。

个别测试案例的结果可以发现,通过该工具的UI组件显示。 UI组件还可以将所有这些单独的测试用例覆盖率结果组合到一个总体测试覆盖率结果中,以提供传统的“所有测试用例执行的所有内容”结果。或者,你可以比较测试用例覆盖结果,看看哪些测试用例覆盖相同的代码,以帮助消除多余的测试用例等

的UI组件还可以产生被测试覆盖的行的报告;这可以编写脚本,因此可以为单独收集的所有测试覆盖矢量生成一个包含行的报告。

+0

谢谢,但我不在Windows上 –

+0

嗯。那么,你可以在Wine上运行该工具的工具部分(这是经过很好测试的);您可以使用产品提供的shell脚本执行此操作。该工具的其余部分是基于Java的,并将在Linux上运行。 –

相关问题