Я пытаюсь сгенерировать входные данные для функции Java с помощью EvoSuite.Входные данные представляют собой набор целых чисел. Рассмотрим следующий базовый класс:
class Abc {
public int sum(int value1, int value2, int value3){
int sum = value1 + value2 + value3;
return sum;
}
}
Вот простой тестовый файл, который я создал для этого класса:
public class AbcTest {
@Test
public void test() {
int value1 = 3;
int value2 = 0;
int value3 = 5;
Abc abc = new Abc();
int result = abc.sum(value1,value2, value3);
int expected_result = 8;
Assert.assertEquals(expected_result, result);
}
}
Когда EvoSuite запускается, онсгенерировал следующий код: (Abc_ESTest.java)
@RunWith(EvoRunner.class) @EvoRunnerParameters(mockJVMNonDeterminism = true, useVFS = true, useVNET = true, resetStaticState = true, separateClassLoader = true, useJEE = true)
public class Abc_ESTest extends Abc_ESTest_scaffolding {
@Test(timeout = 4000)
public void test0() throws Throwable {
Abc abc0 = new Abc();
int int0 = abc0.sum(0, 0, 0);
assertEquals(0, int0);
}
@Test(timeout = 4000)
public void test1() throws Throwable {
Abc abc0 = new Abc();
int int0 = abc0.sum(0, 0, (-1779));
assertEquals((-1779), int0);
}
@Test(timeout = 4000)
public void test2() throws Throwable {
Abc abc0 = new Abc();
int int0 = abc0.sum(0, 1, 0);
assertEquals(1, int0);
}
}
Для каждого теста EvoSuite генерировал три целых числа для функции «сумма», как и ожидалось.То, что я хочу сделать, это ограничить границы этих входных значений, генерируемых EvoSuite.Например, целочисленные значения, сгенерированные EvoSuite, должны быть в диапазоне 0-10.Следовательно, (0, 0, 0) является допустимым входным сигналом, но (0, 0, (-1779)) в данном случае - нет.
Можно ли ограничить границы входов, генерируемых EvoSuite?Если это невозможно, можете ли вы предложить другой инструмент для выполнения этой задачи (генерирование входных данных в ограниченном диапазоне и увеличение покрытия кода)?
Заранее спасибо.