EvoSuite сгенерировал ограничение ввода - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь сгенерировать входные данные для функции 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?Если это невозможно, можете ли вы предложить другой инструмент для выполнения этой задачи (генерирование входных данных в ограниченном диапазоне и увеличение покрытия кода)?

Заранее спасибо.

...