【发布时间】:2016-10-21 16:21:21
【问题描述】:
【问题讨论】:
标签: maven testing junit code-coverage cobertura
【问题讨论】:
标签: maven testing junit code-coverage cobertura
这些数字对应于测试期间该行执行的次数。用一个简单的例子:
public class MyClass {
public void methodA(){
System.out.println("Method a");
}
public void methodB(){
System.out.println("Method b");
}
}
通过一些测试:
public class MyClassTest {
@Test
public void testMethodA(){
final MyClass x = new MyClass();
x.methodA();
}
@Test
public void testMethodB(){
final MyClass x = new MyClass();
x.methodB();
}
}
我将得到以下报告,表明我构建了我的测试对象两次,并且每个方法运行了一次:
如果我在testMethodB 上添加@Ignore 注释,则会生成以下报告,表明我只构建了一次类,并且在测试时没有执行methodB 内的行:
颜色与覆盖率相关。当没有覆盖该行或分支的测试时,它将显示为红色。
编辑 - 关于您在 cmets 中的问题,由于未检查所有条件,可能会丢失覆盖范围。例如,考虑这种方法:
public void methodB(final boolean testOne, final boolean testTwo){
if(testOne || testTwo){
System.out.println("Method b");
}
System.out.println("Done");
}
还有这个测试:
@Test
public void testMethodB(){
final MyClass x = new MyClass();
x.methodB(true, false);
x.methodB(true, true);
}
您最终会得到以下测试报告。这是因为尽管您在测试中确实执行了这一行(实际上是 2 次),但我没有测试条件的所有排列,因此,报告将显示我缺少覆盖率。
【讨论】: