我要测试的示例目标代码如下:
public class Calculator {
public int div(final int a, final int b) {
if (b > 3) {
return a/(b-5);
} else {
return a/(b-1);
}
}
}
我期望生成带有参数b == 1
和b == 5
的测试以发现所有可能的ArithmeticException
情况。但是只提供了仅发现1 ArithmeticException
种情况的此选项:
@Test(timeout = 4000)
public void test3() throws Throwable {
Calculator calculator0 = new Calculator();
// Undeclared exception!
try {
calculator0.div(2232, 1);
fail("Expecting exception: ArithmeticException");
} catch(ArithmeticException e) {
//
// / by zero
//
verifyException("hello.Calculator", e);
}
}
(其他生成的测试是:div(0, 3); div(-5, 0); div(5, 0); div(-635, 3661);
)
我已经尝试了mvn的以下运行选项,但无济于事:-Dsearch_budget=600 -DtimeInMinutesPerClass=15 -Dminimize=false -Dassertion_strategy=all
有没有办法捕获所有“棘手的”测试用例?
已经有类似的问题:
Evosuite generates only a few test cases(无答案)
EvoSuite - Parameters For Getting Most Code Coverage(建议使用-Dsearch_budget
参数,但不适用于我的情况)