在Evosuite测试生成时如何获得更多(所有)极端情况?

时间:2019-04-16 20:11:23

标签: java evosuite

我要测试的示例目标代码如下:

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 == 1b == 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 generates only a few test cases(无答案) EvoSuite - Parameters For Getting Most Code Coverage(建议使用-Dsearch_budget参数,但不适用于我的情况)

0 个答案:

没有答案