Evosuite使用方法入门
2019-08-28

Evosuite使用方法入门

 

1、简要介绍

EvoSuite开源工具可以基于Eclipse进行测试用例的自动生成,生成的测试用例符合Junit标准(直接生成可进行Junit的java文件),满足分支覆盖(即判定覆盖)|

Evosuite分为Eclipse插件使用和命令行两种使用方法,推荐使用命令行。以下会详细说明

2、前提条件:

配置 JDK

安装 Apache Maven

3、Evosute插件

安装方式:

在eclipse中点击菜单栏的help

选择Install New Software

点击Add按钮

在location位置输入http://www.evosuite.org/update

选中 Junit Test Generation

一路next下去,直到finish

重启Eclipse即可

运行方式:

插件安装后,重启Eclipse,随意选中一个java类文件,

鼠标右击,选择Generate tests with EvoSuite

局限性:

仅支持Java8+Eclipse(Luna、Mars两个版本)

会生成单独生成一个测试包,在mooctest下做练习无法直接提交

4、Evosuite命令行

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

简要介绍:

evosuite是一个可直接运行jar包,通过java -jar evosuite.jar <options>运行,通过更改参数实现特定的功能

运行步骤

说明:将以"C:UserssqcDesktop软件测试evosuiteBrainfuckEngine.java"为例

 

    通过cmd打开命令行

    进入到evosuite文件所在的路径下

    evosuite执行对象是字节码文件,所以需要将待测的Java文件编译成.class的字节码文件

    通过java -jar evosuite.jar(evosuite.jar是文件的名称),由于没有赋参数,使用默认参数-help,显示所有的可选参数

    通过执行以下命令自动生成测试用例(参数将在下面解释)

    本例中将会在当前目录下生成一下两个文件夹                                                                            

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

    evosuite-tests下生成以下两个文件,第二个文件可以忽略

    将BranfuckEngine_ESTest.java中的测试用例复制到eclipse下

    修改错误,运行

    结束。

 

常用的参数解释

-class :执行的对象

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

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

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

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

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

更过参数请参考开发文档:http://www.evosuite.org/documentation/tutorial-part-1/

值得注意的地方

运行时会使用随机的种子,所以每次的生成的测试用例都不相同,也可以通过手动设置随机种子,使得生成两次相同的测试用例

默认criterion使用复合的参数,可以根据需求&通过查看statistics文件查看代码覆盖率,修改criterion的参数,提高代码覆盖率

当编译Java文件中有中文字符时会报错,通过修改默认的编码格式为utf格式:执行 javac -encoding utf-8 BrainfuckEngine.class

复制代码到eclipse中,运行之前休要Clean一下工程,否则会报错

eclipse中文件夹目录结构不要修改,否则会提交失败

本地配置JAVA_HOME(即使Eclipse可以运行成功)