1

今週、以前の試験問題を使用してテストを改訂していますが、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つのブランチがありません!

4

2 に答える 2

3

テストしてみませんか:

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-11T18:34:34.273 に答える
0

4人に1人(=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;
于 2012-11-11T18:43:42.573 に答える