是否有自动方法确保代码的所有部分都经过单元测试?

时间:2010-03-30 02:48:39

标签: java unit-testing junit

我已经为我的类编写了JUnit测试,并希望它能告诉我我的代码中是否有任何部分未经过单元测试。有没有办法做到这一点?

5 个答案:

答案 0 :(得分:11)

是的,覆盖率工具如coberturaemma

他们创建reports,显示源代码中的每一行以及它是否已执行(以及聚合统计信息)。

当然,他们只能告诉您代码是否已运行。没有办法判断单元测试是否包含断言以确认结果是否正确。

答案 1 :(得分:4)

您需要一些代码覆盖工具。有关

的信息,请参阅here (http://java-source.net/open-source/code-coverage)

如果你看第一个,我认为它可以满足您的需求

Cobertura是一个免费的Java工具,可以计算测试访问的代码百分比。它可用于识别Java程序的哪些部分缺少测试覆盖率。它基于jcoverage。 Cobertura的特点:

  • 可以从蚂蚁或从蚂蚁执行 命令行。

答案 2 :(得分:1)

如果您使用Eclipse,您还可以尝试EclEmma,它会向您显示测试涵盖的源代码行。这有时比运行Cobertura这样的覆盖工具更有用,因为您可以从Eclipse内部运行单个测试,然后立即获得所涵盖内容的反馈。

答案 3 :(得分:0)

您的标题和实际问题有所不同。其他答案中提到的工具可以告诉您,代码的哪一部分是测试(=根本没有执行)。 “确保代码的所有部分都经过单元测试”是另一回事。覆盖工具可以告诉您是否所有行/指令都已执行,但它们并不保证所有内容都在功能上进行测试(所有数据星座,所有执行路径等)。这需要一些脑力。 在我看来,测试覆盖率往往给人一种错误的安全感。例如。测试琐碎的吸气剂会增加很多覆盖范围但是没用。

答案 4 :(得分:0)

如果您使用IntelliJ,则会出现一个标题为

的按钮

“以覆盖范围运行”

Run with Coverage