EvoSuite生成单元测试用例

文章目录

  • 1. 前言
  • 2. maven 使用
  • 3. Intellij IDEA 插件
  • 参考

1. 前言

闲话少说,直接上干货。

EvoSuite 官网:http://www.evosuite.org
开源代码:https://github.com/chenlinghong/evosuite

2. maven 使用

1、引入 maven 插件

<plugin>
    <groupId>org.evosuite.pluginsgroupId>
    <artifactId>evosuite-maven-pluginartifactId>
    <version>${evosuite.version}version>
plugin>

其中,evosuite.version 建议查询官网最新版本。

2、引入evosuite依赖

<dependency>
    <groupId>org.evosuitegroupId>
    <artifactId>evosuite-standalone-runtimeartifactId>
    <version>${evosuite.version}version>
    <scope>testscope>
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

EvoSuite生成单元测试用例_第1张图片

点击即可看到参数选项,配置上刚才所说的几个参数即可:

EvoSuite生成单元测试用例_第2张图片

参考

  • 测者的测试技术手册:自动化的自动化EvoSuite:Maven项目集成EvoSuite实战

你可能感兴趣的:(Java)