EvoSuite生成的输入限制

时间:2019-01-29 17:37:48

标签: code-coverage evosuite

我正在尝试使用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生成的输入范围?如果不可能,您是否可以建议使用另一种工具来执行此任务(在有限范围内生成输入并增加代码覆盖范围)?

先谢谢了。

0 个答案:

没有答案