我要通过测试覆盖的示例目标代码如下所示:
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
情况。但是仅ArithmeticException
提供了仅发现 1 个案例的此选项:
@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 只生成几个测试用例(没有答案)
EvoSuite - 获取大多数代码覆盖率的参数(建议使用-Dsearch_budget
不适用于我的案例的参数)