编写单元测试时(使用JUnit),是否有必要单独的测试方法,以达到完整的条件覆盖?
借此片段,例如:
int foo(boolean a, boolean b, boolean c){
if(a && b && c)
return 1;
else return 0;
}
它是更好,如果这一点,如果编写条件覆盖一个方法和不同的说法?或者每个条件的一个方法是什么?
@Test
void conditionsTest(){
assertEqual(0, foo(true, false, false));
assertEqual(0, foo(true, true, false));
assertEqual(1, foo(true, true, true));
...
}
要么
@Test
void condition1Test(){
assertEqual(0, foo(true, false, false));
}
@Test
void condition2Test(){
assertEqual(0, foo(true, true, false));
}
@Test
void condition3Test(){
assertEqual(1, foo(true, true, true));
}
虽然没有必要分裂测试中,它可以更好地做到这一点:
诚然:第二个方面取决于您的覆盖工具提供的数据采集的粒度。我们公司的工具Coco收集覆盖每个测试功能,但对于C,C ++和C#这样做,仅此而已。你可能想看看对于Java代码相当于能力。