在这个问题被标记为重复之前,请仔细阅读它。;)
已经有几个关于覆盖工具等问题的提问,但这个问题与通常的问题有些不同(我希望如此)。
根据wikipedia 的说法,有几种不同类型的“覆盖”变量会影响到“覆盖”的几个不同方面。
下面是一个小例子:
正如您所看到的,测试将覆盖100%的行,对字段“c”的值的断言将覆盖该字段并间接覆盖字段“b”,但是没有对字段“a”的断言覆盖。
这意味着测试覆盖了100%的代码行,并确保c包含预期的值,很可能也包含正确的b,但是根本没有断言a,因此可能有完全错误的值。
那么...现在的问题是:是否有工具能够分析(java)代码并创建关于哪些字段/变量/任何内容未被(直接和/或间接)覆盖的报告?
(使用getter而不是公共字段时,您会发现getA()未被调用,但好吧,这不是我想听到的答案;) )
根据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”,但是没有对字段“a”的断言覆盖。
这意味着测试覆盖了100%的代码行,并确保c包含预期的值,很可能也包含正确的b,但是根本没有断言a,因此可能有完全错误的值。
那么...现在的问题是:是否有工具能够分析(java)代码并创建关于哪些字段/变量/任何内容未被(直接和/或间接)覆盖的报告?
(使用getter而不是公共字段时,您会发现getA()未被调用,但好吧,这不是我想听到的答案;) )