我正在尝试使用EvoSuite为Java函数生成输入。输入是一组整数。请考虑以下基本类:
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均按预期为“ sum”函数生成了三个整数。我想要做的是限制EvoSuite生成的这些输入值的界限。例如,生成的整数值 通过EvoSuite应该在0-10之间。因此,在这种情况下,(0,0,0)是有效输入,但(0,0,(-1779))不是有效输入。
是否可以限制EvoSuite生成的输入范围?如果不可能,您是否可以建议使用另一种工具来执行此任务(在有限范围内生成输入并增加代码覆盖范围)?
先谢谢了。