題目
public class TestExample {
public int function(int fo, int fb, boolean s) {
int a_def = 100;
int s_def = 50;
int dmg = 0;
if (s) {
fo -= a_def * 0.2;
if (fo < 0)
fo = 0;
dmg += fo;
s_def -= fo;
if (s_def < 0)
s_def = 0;
fb -= s_def + a_def;
if (fb < 0)
fb = 0;
dmg += fb;
} else {
if (fb <= a_def)
a_def -= fb;
else {
a_def = 0;
fb -= a_def;
dmg += fb;
s_def -= fb;
if (s_def < 0)
s_def = 0;
}
fo -= s_def + a_def;
if (fo < 0)
fo = 0;
dmg += fo;
}
return dmg;
}
}
測試用例:f0 =50,fb=200,s=true;
if (s) T
if (fo < 0) F
if (s_def < 0) F
if (fb < 0) F
測試用例:f0 =0,fb=50,s=true;
if (s) T
if (fo < 0) T
if (s_def < 0) F
if (fb < 0) T
測試用例:f0 =100,fb=50,s=true;
if (s) T
if (fo < 0) F
if (s_def < 0) T
if (fb < 0) T
測試用例:f0 =50,fb=50,s=false;
if (s) F
if (fb <= a_def) T
if (s_def < 0) 無法取到
if (fo < 0) T
測試用例:f0 =50,fb=150,s=false;
if (s) F
if (fb <= a_def) F
if (s_def < 0) T (若取到則永真)
if (fo < 0) F
由上,完成判定覆蓋。所有判定條件的真假都覆蓋了。