是否有某种'断言'覆盖工具(用于Java)?
在此问题被标记为重复之前,请阅读它。 ;)关于报道工具等问题已经有几个问题,但是这与通常的有点不同(我希望)。
根据维基百科,有几种不同类型的“覆盖率”变化会影响“覆盖率”这个术语的几个不同方面。
这里有一个小例子:
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而不是public字段时,你会发现getA()没有被调用,但是这不是我想要听到的答案;))
正如您所看到的,测试将覆盖100%的行,关于字段'c'的值的断言将覆盖该字段并间接覆盖字段'b',但是在字段'a'上没有断言覆盖。 。 这意味着测试覆盖了100%的代码行,并确保c包含期望值,并且很可能b也包含正确的值,但a完全没有被声明,并且可能是完全错误的值。
那么,不幸的是,“封面”对不同的人意味着不同的东西......这个测试的确行使了100%的代码行,但是并没有对它们全部进行测试。
你正在寻找的是通过突变测试处理好。
看看Jester,它使用变异测试来报告代码覆盖率。
“测试覆盖率”有数百个定义,其中COTS工具最多只能处理很少的几个。 (我的公司构建测试覆盖工具,以便跟踪这种事情)。 有关有趣的概述,请参阅关于测试覆盖率的讲座。
我听到的最接近的定义是数据覆盖范围; 取决于你的定义: - {它告诉你每个数据项在执行期间已经被写入和读取。 讲座讲述了如何验证每一个写作和每个阅读都已经被作为一个特例。
我不太了解数百个定义,但你可能已经发明了一个:数据覆盖限于断言。
请通过下面的链接
兼容性测试工具
链接地址: http://www.djcxy.com/p/6917.html上一篇: Is there some kind of 'assertion' coverage tool (for Java)?
下一篇: How does the triggering of mousemove work in Javascript?