【发布时间】:2011-05-11 07:43:13
【问题描述】:
在此问题被标记为重复之前,请阅读它。 ;) 已经有几个关于覆盖工具等的问题,但这与通常的问题有点不同(我希望如此)。
根据wikipedia,有几种不同类型的“覆盖”变体会影响“覆盖”一词的几个不同方面。
这里有一个小例子:
public class Dummy {
public int a = 0;
public int b = 0;
public int c = 0;
public void doSomething() {
a += 5;
b += 5;
c = b + 5;
}
}
public class DummyTest {
@Test
public void testDoSomething() {
Dummy dummy = new Dummy();
dummy.doSomething();
assertEquals( 10, dummy.c );
}
}
如您所见,测试将覆盖 100% 的行,对字段“c”值的断言将覆盖该字段并间接覆盖字段“b”,但是对字段没有断言覆盖'一种'。 这意味着测试覆盖了 100% 的代码行,并确保 c 包含预期值,并且很可能 b 也包含正确的值,但是根本没有断言 a 并且可能是完全错误的值。
所以......现在的问题是:是否有一种工具能够分析(java)代码并创建一个关于哪些字段/变量/任何内容没有(直接和/或间接)被断言覆盖的报告?
(好的,当使用 getter 而不是公共字段时,您会看到 getA() 没有被调用,但这不是我想听到的答案;))
【问题讨论】:
-
那么……您正在寻找某种工具来覆盖信息流?这实际上是有用的,虽然我不知道任何副手。有一个 +1。
-
是的,因为我很懒 ;) 我想要一些对我说的话,嘿,你忘了测试 YZ 类中字段 XY 的值。
标签: java code-coverage