EvoSuite

2022-05-22 10:12:18 浏览数 (1)

1 在Eclipse下运行

1)在eclipse中点击菜单栏的help测试。

2)选择Install New Softwareui。

3)点击Add按钮编码。

4)在location位置输入http://www.evosuite.org/updatespa。

5)选择 Junit Test Generation 插件。

6)一直next下去,直到finish命令行。

7)重启Eclipse便可。

8)插件安装后,重启Eclipse,随意选中一个java被测文件,比如Calculator.java。

代码语言:javascript复制
package  com.jerry;

public class Calculator{
private static int result;
public void add(int n) {
        result = result   n;
    }
public void substract(int n) {
        result = result - n; 
    }
public void multiply(int n) {
           result  = result * n;
    }
public void divide(int n){
try  {
                  result  = result / n;
           }catch(ArithmeticException  ex){
                  System.out.println(ex);
throw  new ArithmeticException("The n not allowed to 0!!");
           }
    }
public void square(int n) {
        result = n * n;
    }
public void squareRoot(int n) {
           result  = (int)Math.sqrt(n);
    }

public void clear() {
        result = 0;
    }
public int getResult() {
return result;
    }
}

9)鼠标右击,选择Generate tests with EvoSuite

10)在项目中生成如下目录

11)运行Calculator_ESTest.java即可

2 命令运行

evosuite下载地址:http://www.evosuite.org

evosuite是一个可直接运行jar包,经过java -jar evosuite.jar<options>运行,经过更改参数实现特定的功能。 将evosuite.jar拷贝到C:UsersxiangDesktopevosuite下,将Calculator.java拷贝到C:UsersxiangDesktopevosuitecomjerryCalculator.java

运行步骤

经过cmd打开命令行

C:UsersxiangDesktopevosuite>javac com/jerry/Calculator.java

在目录C:UsersxiangDesktopevosuitecomjerry目录下生成Calculator.java

evosuite执行对象是字节码文件,因此须要将待测的Java文件编译成.class的字节码文件。

经过

C:UsersxiangDesktopevosuite>java -jar evosuite.jar

evosuite.jar是文件的名称,因为没有赋参数,使用默认参数-help,显示全部的可选参数。

经过执行如下命令自动生成测试用例。

C:UsersxiangDesktopevosuite>java -jar evosuite.jar -class Calculator -projectCP ./

产生下面两个目录

在evosuite-report中生成一个statistics.csv的文件,文件中显示目标类、生成测试的标准,覆盖率等参数。

在C:UsersxiangDesktopevosuiteevosuite-testscomjerry下生成两个文件

Calculator_ESTest.java

Calculator_ESTest_scaffolding.java

将这2个java文件拷贝到Eclipse目录下,在项目中加入evosuite.jar,运行Calculator_ESTest.java。

3 参数说明

-class :执行的对象

-projectCP:设置测试生成的类路径

-help:要查看可用的命令行选项

-criterion :测试的标准参数有(line、branch、cbranch、mutation 、exception等)

-Dminimize=false//它会删除全部不知足覆盖率目标所需的语句

-Dassertion_strategy=all//使用大量断言生成长测试

4 注意

  • 运行时会使用随机的种子,因此每次的生成的测试用例都不相同,也能够经过手动设置随机种子,使得生成两次相同的测试用例
  • 默认criterion使用复合的参数,能够根据需求和经过查看statistics文件查看代码覆盖率,修改criterion的参数,提升代码覆盖率
  • 当编译Java文件中有中文字符时会报错,经过修改默认的编码格式为utf格式:执行 javac -encoding utf-8BrainfuckEngine.class
  • 复制代码到eclipse中,运行以前休要Clean一下工程,不然会报错
  • eclipse中文件夹目录结构不要修改,不然会提交失败
  • 本地配置JAVA_HOME(即便Eclipse能够运行成功)

0 人点赞