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

工具简介

Evosuite是国外大学机构主导开发的一款开源的Java单测代码生成工具,在数次SBST Unit Testing Tool Competition中评测获得最高分。官网地址:http://www.evosuite.org/

Evosuite的主要特性(翻译自官网):

1.对于指定类,生成Junit4类型的单测代码。

2.根据不同覆盖指标调整生成的用例,例如 行覆盖,分支覆盖,输出覆盖等。

3.单测用例最小化,只有对覆盖率有贡献的单测用例才会被保留。

4.生成的单测用例中包含Junit断言。

5.测试运行在sandbox中。

6.虚拟文件系统。

7.虚拟网络。

工具安装方法

工具支持4种方式,包括:1.命令行,2.Eclipst plugin,3.Idea plugin,4.Maven plugin。因为我们工程都是maven工程,因此使用Maven plugin方式介绍。(其他详细用法可参考官网)

1.首先确保项目中有Junit,推荐Junit4.12以上

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.12</version>
  <scope>test</scope>
</dependency>

2.在pom.xml中添加下面三段(前两段必须,第三段可选)。 第一段里 evosuite-standalone-runtime.jar是跑单测代码时需要用到的Evosuie运行时环境。第二段 maven plugin用来生成单测代码。第三段是evosuite统计单测覆盖率的plugin。

<dependency>
  <groupId>org.evosuite</groupId>
  <artifactId>evosuite-standalone-runtime</artifactId>
  <version>${evosuiteVersion}</version>
  <scope>test</scope>
</dependency>-------------------------------------------------------
<pluginManagement>
<plugins>
   <plugin>
      <groupId>org.evosuite.plugins</groupId>
      <artifactId>evosuite-maven-plugin</artifactId>
      <version>1.0.6</version>
      <executions><execution>
         <goals> <goal> prepare </goal> </goals>
         <phase> process-test-classes </phase>
      </execution></executions>
  </plugin>
</plugins>
</pluginManagement>-----------------------------------------------------
<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-surefire-plugin</artifactId>
   <version>2.17</version>
   <configuration>
     <properties>
       <property>
          <name>listener</name>
          <value>org.evosuite.runtime.InitializingListener</value>
      </property>
     </properties>
  </configuration>
</plugin>

工具使用方法

Evosuite maven plugin主要包括以下用法:1.generate用来生成单测代码,生成后的单测代码在.evosuite目录下;2.export用来把.evosuite中的单测代码移到指定文件夹下,
默认目标路径是src/test/java,指定路径时使用-DtargetFolder参数;3.info用来显示生成的单测代码信息;4.clean用来清除.evosuite目录下的单测代码;

示例1:mvn evosuite:help -Ddetail=true -Dgoal=generate 显示generate的详细用法,支持的参数。
示例2:mvn evosuite:generate -Dcuts=com.ucenter.users.service.impl.ApiServiceImpl  只针对对ApiServiceImpl生成单测用例。注意:Evosuite基于字节码来生成单测代码,因此源代码必须先编译后,才能使用evosuite.
示例3:mvn -DmemoryInMB=2000 -Dcores=2 evosuite:generate evosuite:export  test,终极用法,编译-》会针对所有类生成单测用例并导出到src/test/java下-》运行单测,-DmemoryInMB=2000表示试用2000MB的内存,-Dcores=2表示用2个cpu来并行加快生成速度。

注意:当工程代码量大时,生成花费的时间可能很长。

工具效果评估

使用业务工程中server层一个service类ApiServiceImpl进行试用,会生成两份文件,ApiServiceImpl_ESTest.java包含单测用例,ApiServiceImpl_ESTest_scaffolding.java 用例基类,用来在测试前初始化Evosuite的沙盒环境。

1.可以看到Evosuite会自动对servce依赖的其他对象进行mock。2.针对被测方法的参数,根据参数类型会使用各种边界值进行测试。使用evoSuite生成的单测代码覆盖率可以达到:方法覆盖100%,行覆盖51%。3.工具存在的不足之处是,Mock对象的方法调用只能返回空值null值等, 没有对方法进行特定的stub,因此正常的逻辑无法走到。EvoSuite生成的单测用例更适用于测试边界情况和异常情况。作为测试边界和异常情况时,使用Evosuite是可以省不少力的。

原文地址:https://www.cnblogs.com/sanmuqingliang/p/12209897.html

时间: 2024-10-09 04:20:37

【原创】单测代码生成工具Evosuite试用的相关文章

bboss自动代码生成工具使用指南

本文介绍bboss自动代码生成工具使用方法 工具在线浏览效果: http://gencode.bbossgroups.com 在介绍之前首先了解一下bboss自动代码生成工具能帮助我们做哪些事情. 通过自动代码生成框架,根据模板可以自动生成数据库表的增.删.改.分页查询.列表查询.国际化功能对应的java.jsp程序和配置文件,包括: 1.mvc控制器 2.业务组件 3.PO实体类 4.jsp文件 可以定制不同风格的界面模板,目前提供了一套bboss平台的基础ui风格和一套bboss普通ui风格

20代码生成工具

1.1 CodeSmith 一款人气很旺国外的基于模板的dotnet代码生成器 官方网站:http://www.codesmithtools.com 官方论坛:http://forum.codesmithtools.com/default.aspx 版权形式:30天试用 开源:否 需要先注册确认后才能下载 1.2 MyGenerator MyGenerator是又一个国外很不错的代码生成工具,有人觉得比CodeSmith简单.好用.所有api可以在帮助菜单中找到. 官方网站:http://www

ORM框架-VB/C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG】4.6

摘要:VB/C#.Net实体代码生成工具(EntitysCodeGenerate)[ECG]是一款专门为.Net数据库程序开发量身定做的(ORM框架)代码生成工具,所生成的程序代码基于OO.ADO.NET.分层架构.ORM及反射+工厂设计模式等.支持.Net1.1及以上版本,可用于Oracle.SqlServer.Sybase.DB2.MySQL.Access.SQLite.PostgreSQL.DM(达梦).PowerDesigner文件.Informix.Firebird.MaxDB.Exc

动软代码生成工具

动软实战攻略 手把手教你用动软 文档编号:20110421 版权所有 © 2004-2011 动软 在线帮助:http://help.maticsoft.com 目录   一.        产品介绍 二.        下载安装 三.        注册数据库连接 四.        查看数据库信息 五.        新建整个项目 六.        批量代码生成 七.        单表代码生成 八.        父子表代码生成(事务生成) 九.        代码生成规则设置 十.  

MVC 5 Scaffolder + EntityFramework+UnitOfWork Pattern 代码生成工具

MVC 5 Scaffolder + EntityFramework+UnitOfWork Pattern 代码生成工具集成Visual Studio 2013 MVC 5 Scaffolder + EntityFramework+UnitOfWork Pattern 代码生成工具 经过一个多星期的努力总算完成了单表,多表关联(一对多,多对一)的增删改查的代码生成,基本上可以实现不用添加任何代码完成对数据表的操作. 下个阶段打算集成.net 4.5的认证和授权已经用户注册和角色管理 一旦有更好的

Jenkins+maven+git+sonar 系统持续集成&amp;代码单测管理

Jenkins+maven+git+sonar 系统持续集成&代码单测管理 Jenkins的安装 Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括: 1.持续的软件版本发布/测试项目. 2.监控外部调用执行的工作. 1.下载最新的版本(一个 war 文件).Jenkins官方网址: http://Jenkins-ci.org/ 2.运行 java -jar jenkins.war(jenkins默认使用的是内嵌的jetty服务,用户也可以布置到其它容器中.)

翻译:Laravel-4-Generators 使用自定义代码生成工具快速进行Laravel开发

使用自定义代码生成工具快速进行Laravel开发 这个Laravle包提供了一种代码生成器,使得你可以加速你的开发进程,这些生成器包括: generate:model – 模型生成器 generate:view – 视图生成器 generate:controller – 控制器生成器 generate:seed – 数据库填充器 generate:migration – 迁移 generate:pivot – 关联表 generate:resource -资源 generate:scaffold

AB-web服务的测压工具

AB测压工具 ab-web service压力测试工具 ab [option][http[s]]://hostname[:port]/path 请求数:-n requests 并发数: -c concurrency 长连接: -k [[email protected] html]# ab -n 1000 -c 10  https://10.1.45.70/index.txt This is ApacheBench, Version 2.3 <$Revision: 1430300 $> Copy

mybatis实战教程(mybatis in action)之九:mybatis 代码生成工具的使用

mybatis 应用程序,需要大量的配置文件,对于一个成百上千的数据库表来说,完全手工配置,这是一个很恐怖的工作量. 所以mybatis 官方也推出了一个mybatis代码生成工具的jar包. 今天花了一点时间,按照 mybatis generator 的doc 文档参考,初步配置出了一个可以使用的版本,我把源代码也提供下载,mybatis 代码生成工具,主要有一下功能:1.生成pojo 与 数据库结构对应2.如果有主键,能匹配主键3.如果没有主键,可以用其他字段去匹配4.动态select,up