我已经为我的类编写了JUnit测试,并希望它能告诉我我的代码中是否有任何部分未经过单元测试。有没有办法做到这一点?
答案 0 :(得分:11)
他们创建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,则会出现一个标题为
的按钮“以覆盖范围运行”