操作系统:Win10 64
软件版本:JDK1.8
Eclipse Luna/Mars
EvoSuite开源工具可以基于Eclipse进行测试用例的自动生成,生成的测试用例符合Junit标准(直接生成可进行Junit的java文件)。满足分支覆盖(即判定覆盖)
它的局限性在于需要Java8的运行环境,并且只支持Eclipse的Luna和Mars版本
EvoSuite插件不需要单独下载,但在安装完毕Java 8之后,需要将jdk1.8/lib/tools.jar文件复制到 jre8/lib/ 文件夹当中,在此之后Java 8才能保证EvoSuite插件的正常运行。
2.1 打开Eclipse 依次点击菜单栏的help->Install New Software…
2.2 点击Add…按钮,弹出如下对话框
2.3在Location栏中输入EvoSuite Eclipse插件的地址:http://www.evosuite.org/update 后,点击OK按钮
2.4 选中 Junit Test Generation 后,点击Next按钮
2.5 上图中运行时间可能过长,请耐心等待,运行完毕后,结果如下
2.6 点击Next按钮,选中 I accept the terms of license agreement后,点击Finish按钮后,显示 Installing Software对话框,等待一段时间后,对于弹出对话框一路点击OK,Yes即可
2.7 待Eclipse重启后,随意选中一个java类文件,若出现如下图标,则插件安装成功。
Calculator代码实例如下:
package test2;
public class Calculator {
/**
* 传入两个参数,求和
* @param a
* @param b
* @return
*/
public int add(int a,int b){
return a+b;
}
/**
* 传入两个参数,求差
* @param a
* @param b
* @return
*/
public int sub(int a,int b){
return a-b;
}
}
3.2 选中需要测试的类,右击-> Generate tests with EvoSuite ,则会在项目中的evosuite-tests文件夹内生成测试用例java文件。生成的测试类为标准的Junit 4 测试类,可以完全按照Junit 4 的操作规范对其测试。
自动生成的测试代码如下,可以看到生成了6个测试用例test0-test5:
/*
* This file was automatically generated by EvoSuite
* Tue Aug 07 15:49:05 CST 2018
*/
package test2;
import static org.junit.Assert.assertEquals;
import org.evosuite.runtime.EvoRunner;
import org.evosuite.runtime.EvoRunnerParameters;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(EvoRunner.class) @EvoRunnerParameters(useVNET = true, separateClassLoader = true, useJEE = true)
public class Calculator_ESTest extends Calculator_ESTest_scaffolding {
@Test(timeout = 4000)
public void test0() throws Throwable {
Calculator calculator0 = new Calculator();
int int0 = calculator0.add(0, 1);
assertEquals(1, int0);
}
@Test(timeout = 4000)
public void test1() throws Throwable {
Calculator calculator0 = new Calculator();
int int0 = calculator0.sub(0, (-1));
assertEquals(1, int0);
}
@Test(timeout = 4000)
public void test2() throws Throwable {
Calculator calculator0 = new Calculator();
int int0 = calculator0.sub((-1), 0);
assertEquals((-1), int0);
}
@Test(timeout = 4000)
public void test3() throws Throwable {
Calculator calculator0 = new Calculator();
int int0 = calculator0.add((-1), 0);
assertEquals((-1), int0);
}
@Test(timeout = 4000)
public void test4() throws Throwable {
Calculator calculator0 = new Calculator();
int int0 = calculator0.add(0, 0);
assertEquals(0, int0);
}
@Test(timeout = 4000)
public void test5() throws Throwable {
Calculator calculator0 = new Calculator();
int int0 = calculator0.sub(0, 0);
assertEquals(0, int0);
}
}
3.3 选中项目,右击鼠标,选择Export->General->Ant Buildfiles后,设置Name for Ant buildfile和Junit output directory(一般不修改使用默认值),点击Finish,项目中出现build.xml文件。
在项目文件夹内新建junit空文件夹,选中build.xml,右击鼠标,选择Run As->选择第二个Ant Build…后,选中默认以及junitreport和要生成测试报告的测试类,点击Run,在junit文件夹中可以看到测试报告。
点击index.html之后,示例结果如下图:
3.4 点击Windows->Preferences ,查找到EvoSuite可进行参数设置
部分参数说明:
1. Enable Markers and Quick-fixes:选中此选项会在生成的测试类中产生提示的标记
2. Time for EvoSuite to improve code coverage(s): 允许EvoSuite生成测试类时改进代码覆盖率的最大时间
3. Print test comments:选中此项会在测试类中每一个测试方法上加上详细地注释