Мой пример целевого кода для покрытия тестами выглядит следующим образом:
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 генерирует только несколько тестовых случаев (без ответа)
EvoSuite - параметры для получения наибольшего охвата кода (предлагается использовать параметр -Dsearch_budget
, который не подходит для моего случая)