我正在为本周即将到来的考试复习,使用以前的试题,我只是不能得到100%的覆盖率,我的程序是:
public int computeInsurance(boolean SportsEquipment, boolean MusicEquipment)
{
int insurance;
if(SportsEquipment == true && MusicEquipment==true)
insurance = 20;
else if((SportsEquipment == true && MusicEquipment == false)||(SportsEquipment == false && MusicEquipment == true))
insurance = 10;
else
insurance= 5;
return insurance;
}
}我正在使用以下测试用例:
public class Lab5CarTest {
@Test
public void testComputeInsurance() {
Lab5Car t = new Lab5Car();
int result = t.computeInsurance(true, true);
assertEquals(20,result);
int i = t.computeInsurance(true,false);
assertEquals(10,i);
int u = t.computeInsurance(false,false);
assertEquals(5,u);
}
}但是我在代码的else if行中缺少了8个分支中的3个!
发布于 2012-11-12 02:34:34
你为什么不测试一下:
int ip = t.computeInsurance(false,true);
assertEquals(10,ip);像这样,你应该涵盖所有的内容。
您可以像这样简化代码:
if (SportsEquipment && MusicEquipment)
insurance = 20;
else if (SportsEquipment != MusicEquipment)
insurance = 10;
else
insurance= 5;发布于 2012-11-12 02:43:43
1/4 (=2²)您缺少(不是2³),t.computeInsurance(false, true);
S M I
------
t t 20
t f 10
f t 10
f f 5
if (SportsEquipment && MusicEquipment)
insurance = 20;
else if (SportsEquipment != MusicEquipment)
insurance = 10;
else
insurance= 5;https://stackoverflow.com/questions/13334125
复制相似问题