文章目录
1. 前言2. maven 使用3. Intellij IDEA 插件参考1. 前言
闲话少说,直接上干货。
EvoSuite 官网:
开源代码:/chenlinghong/evosuite
2. maven 使用
1、引入 maven 插件
<plugin><groupId>org.evosuite.plugins</groupId><artifactId>evosuite-maven-plugin</artifactId><version>${evosuite.version}</version></plugin>
其中,evosuite.version 建议查询官网最新版本。
2、引入evosuite依赖
<dependency><groupId>org.evosuite</groupId><artifactId>evosuite-standalone-runtime</artifactId><version>${evosuite.version}</version><scope>test</scope></dependency>
3、编写测试方法
public String evosuite(int id, String name) {if (id == 0 && "name".equals(name)) {return "0#name";}if (id > 0) {name = "name 1";} else {name = "name -1";}return "0#" + name;}
4、执行命令生成测试用例
mvn compile evosuite:generate -Dcores=4 -DmemoryInMB=8000 -DtimeInMinutesPerClass=3 -DspawnManagerPort=63040 -Dcuts=club.chenlinghong.dem.evosuite.EvosuiteDemo evosuite:export -DtargetFolder=src/test/java/evo
主要参数说明:
evosuite:generate 生成测试用例,默认路径为根目录下 .evosuite 文件夹下 best-tests
cores: 分配 CPU 核数,可以理解为任务进程数
memoryInMB: 分配内存空间
cuts: 需要生成单元测试的源代码,不填默认整个项目
evosuite:export 导出文件
targetFolder 目标路径
如果是生成整个项目测试用例代码,直接运行:
mvn evosuite:generate
5、查看生成的测试用例
根据命令指定的目录下,即可生成测试用例代码
@RunWith(EvoRunner.class)@EvoRunnerParameters(mockJVMNonDeterminism = true, useVFS = true, useVNET = true, resetStaticState = true, separateClassLoader = true, useJEE = true) public class EvosuiteDemo_ESTest extends club.chenlinghong.demo.evosuite.EvosuiteDemo_ESTest_scaffolding {@Test(timeout = 4000)public void test0() throws Throwable {EvosuiteDemo evosuiteDemo0 = new EvosuiteDemo();String string0 = evosuiteDemo0.evosuite((-803), "");assertEquals("0#name -1", string0);}@Test(timeout = 4000)public void test1() throws Throwable {EvosuiteDemo evosuiteDemo0 = new EvosuiteDemo();String string0 = evosuiteDemo0.evosuite(0, "oame");assertEquals("0#name -1", string0);}@Test(timeout = 4000)public void test2() throws Throwable {EvosuiteDemo evosuiteDemo0 = new EvosuiteDemo();String string0 = evosuiteDemo0.evosuite(0, "name");assertEquals("0#name", string0);}@Test(timeout = 4000)public void test3() throws Throwable {EvosuiteDemo evosuiteDemo0 = new EvosuiteDemo();String string0 = evosuiteDemo0.evosuite(343, "0#name");assertEquals("0#name 1", string0);}}
可以看到,生成的测试用例代码满足 Junit 规范,并采用了 Mockito 框架进行 mock数据。
3. Intellij IDEA 插件
evosuite 支持 IDEA 插件直接生成测试用例代码
1、安装 EvoSuite Plugin
2、重启 IDEA
3、执行代码
找到任意一个 java 文件,然后右键,即可看到 Run EvoSuite
点击即可看到参数选项,配置上刚才所说的几个参数即可: