单元测试自动生成工具evosuite

Posted onlywjy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单元测试自动生成工具evosuite相关的知识,希望对你有一定的参考价值。

github地址:https://github.com/EvoSuite/evosuite
官网地址:http://www.evosuite.org
 
快速开始:
1.  junit 
<dependencies>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
  </dependency>
</dependencies>
 
2.添加 evosuite 插件
 <plugin>
    <groupId>org.evosuite.plugins</groupId>
    <artifactId>evosuite-maven-plugin</artifactId>
    <version>1.0.6</version>
  </plugin>
evosuite 的仓库
<pluginRepositories>
  <pluginRepository>
    <id>EvoSuite</id>
    <name>EvoSuite Repository</name>
    <url>http://www.evosuite.org/m2</url>
  </pluginRepository>
</pluginRepositories> 
3.evosuite 的运行依赖
<dependency>
    <groupId>org.evosuite</groupId>
    <artifactId>evosuite-standalone-runtime</artifactId>
    <version>1.0.6</version>
    <scope>test</scope>
</dependency>

4.开始生成

mvn evosuite:generate
mvn compile -DmemoryInMB=2000 -Dcores=2 -Dcuts=com.xxx.xxx.api.service.impl.CurriculumServiceImpl-DtargetFolder=src/test/java/evosuite evosuite:generate evosuite:export
compile 表示编译。evosuite 是基于编译后的 .class 文件生成用例的,所以需要先编译。
-DmemoryInMB=2000 表示使用 2000MB 的内存
-Dcores=2 表示用2个 cpu 来并行加快生成速度
-Dcuts=com.xxx.xxx.api.service.impl.CurriculumServiceImpl 表示只针对 com.xxx.xxx.api.service.impl.CurriculumServiceImpl 这个类生成用例。多个用例可以用英文逗号分隔
-DtargetFolder=src/test/java/evosuite 表示生成的用例放到 src/test/java/evosuite
evosuite:generate 表示执行生成用例
evosuite:export 表示导出用例到 targetFolder 的值所在的目录中
 
Idea插件使用
http://www.evosuite.org/documentation/maven-plugin/
 
1.下载 evosuite-1.0.6 jar
2.idea安装evosuite插件
3.配置
技术图片
技术图片
2.evosuite -jacoco
注意:EvoSuite的bytecode instrumentation和类似Jacoco这类工具在bytecode instrumentation上有可能有冲突,导致最后的覆盖率统计都是0(修改separateClassLoader = true为false)
<plugins>
      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-report-plugin</artifactId>
          <version>3.0.0-M3</version>
      </plugin>
    <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>0.8.0</version>
        <configuration>
          <excludes>//排出不需要收集覆盖率的
             <exclude>**/*ClazzSearchController.class</exclude>
             <exclude>**/*Application.class</exclude>
             <exclude>com/xxx/xxxx/api/config/**/*</exclude>
          </excludes>
        </configuration>
        <executions>
        <!--                  <execution>-->
<!--                      <id>prepare-agent</id>-->
<!--                      <goals>-->
<!--                          <goal>prepare-agent</goal>-->
<!--                      </goals>-->
<!--                  </execution>-->
<!--                  <execution>-->
<!--                      <id>report</id>-->
<!--                      <phase>prepare-package</phase>-->
<!--                      <goals>-->
<!--                          <goal>report</goal>-->
<!--                      </goals>-->
<!--                  </execution>-->
<!--                  <execution>-->
<!--                      <id>post-unit-test</id>-->
<!--                      <phase>test</phase>-->
<!--                      <goals>-->
<!--                          <goal>report</goal>-->
<!--                      </goals>-->
<!--                      <configuration>-->
<!--                          <dataFile>target/jacoco.exec</dataFile>-->
<!--                          <outputDirectory>target/jacoco-ut</outputDirectory>-->
<!--                      </configuration>-->
<!--                  </execution>-->
                  <execution>
                      <id>prepare-agent</id>
                      <goals>
                          <goal>prepare-agent</goal>
                      </goals>
                  </execution>
                  <execution>
                      <id>generate-code-coverage-report</id>
                      <phase>test</phase>
                      <goals>
                          <goal>report</goal>
                      </goals>
                  </execution>
        </executions>
    </plugin>
</plugins>
 
2.执行命令
mvn jacoco:prepare-agent test jacoco:report
 
技术图片

 

 

 3.查看测试报告

技术图片
技术图片

 

 

 

以上是关于单元测试自动生成工具evosuite的主要内容,如果未能解决你的问题,请参考以下文章

Java单测代码生成工具Evosuite

8智能化单元测试框架实战

原创单测代码生成工具Evosuite试用

自动的自动化:EvoSuite 自动生成JUnit的测试用例

嵌入式代码单元/集成测试工具VectorCAST

2021年软件测试工具总结——单元测试工具