繁体   English   中英

是否有一个Java工具可以找到特定JUnit测试的哪些代码行?

[英]Is there a tool for Java which finds which lines of code are tested by specific JUnit tests?

是否有一个Java工具,给定一组JUnit测试和一个要测试的类,它会告诉你测试中哪些类的行被测试? 即。 要求测试成功运行。 我的意思并不是“代码覆盖率”,它只会告诉您是否执行了一行,而是更强大的代码:测试所需的行是否通过?

我经常注释掉一行代码并运行一个测试,看看测试是否真的在测试那行代码。 我认为这可以通过半智能工具自动完成(例如,类似IDE的东西,可以解决从方法中删除的内容,同时保持其可编辑性)。

有一个名为Jester的开源变异测试工具,可以更改源代码的行,然后运行测试,并报告您的测试是否通过。 与代码覆盖工具相比,您更接近于您所寻找的内容。

Jester是测试java JUnit测试的测试测试程序(Pester用于Python PyUnit测试)。 它修改了您的源代码,运行测试和报告,如果测试通过,尽管代码发生了变化。 这可能表示缺少测试或冗余代码。

WRT关于在纯TDD项目中是否需要这些工具的讨论,Jester项目网页上有一个关于在TDD会话期间使用Jester对代码编写的好处的帖子(Uncle Bob臭名昭着的保龄球TDD示例)。

您正在寻找的可能被称为突变测试 虽然突变测试不会告诉您本身需要通过哪些代码行。 变异测试的作用是修改源代码,寻找可以对代码进行的更改,但测试仍然通过。 例如改变

if (a < b)

if (a >= b)

并看看测试是否仍然通过。 这将突出您的测试中的弱点。

另一个用于突变测试的java库是混乱的

我在大多数项目中使用emma 我将它包含在我的ant构建文件中,并为报告生成html文件

我读过但还没有尝试的另外两个报道项目是三叶草或者cobertura

我喜欢cobertura,因为生成的报告是恕我直言最美的。 它有自己的蚂蚁目标!

与emma相比,它还具有分支覆盖,而不仅仅是线路覆盖,这经常会产生误导。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM