如何使用evosuite为指定被测方法生成测试用例

news2024/11/16 21:51:34

目录

省流版本

准备工作

环境

evosuite获取

检验环境

参数解释

怎样表示被测方法

怎样指向被测类

其他参数

参考


省流版本

java -jar .\target\depd\evosuite-1.1.0.jar 
-generateTests 
-Dtarget_method="isLenient()Z" 
-class com.google.gson.stream.JsonWriter 
-projectCP .\target\classes\ 
-seed 330 
-Dnew_statistics=false 
-criterion branch

准备工作

环境

编译器:IDEA IntelliJ

使用evosuite的方式:command line (与maven使用方式、IDEA插件使用方式相对,后两种我也用过,终于未成功)

evosuite获取

版本:1.1.0

获取地址:https://github.com/EvoSuite/evosuite/releases/tag/v1.1.0

只要第一个

 如何安放:

可以在java项目的target目录下新建depd,然后将jar移动进去

检验环境

在项目的根目录(我这里是C:\dataset\d4j-spec5\gson\v-github\gson-master\gson>)下运行

 java -jar .\target\depd\evosuite-1.1.0.jar

出现以下内容说明环境配好了,也可以顺便摸索一下参数

* EvoSuite 1.1.0
usage: EvoSuite
 -base_dir <arg>            Working directory in which tests and reports
                            will be placed
 -class <arg>               target class for test generation. A fully
                            qualifying needs to be provided, e.g.
                            org.foo.SomeClass
 -continuous <arg>          Run Continuous Test Generation (CTG). Valid
                            values are: [EXECUTE, INFO, CLEAN]
 -criterion <arg>           target criterion for test generation. Can
                            define more than one criterion by using a ':'
                            separated list
 -D <property=value>        use value for given property
 -evosuiteCP <arg>          classpath of EvoSuite jar file(s). This is
                            needed when EvoSuite is called in plugins like
                            Eclipse/Maven
 -generateMOSuite           use many objective test generation (MOSA).
 -generateNumRandom <arg>   generate fixed number of random tests
 -generateRandom            use random test generation
 -generateSuite             use whole suite generation. This is the
                            default behavior
 -generateSuiteUsingDSE     use Dynamic Symbolic Execution to generate
                            test suite
 -generateTests             use individual test generation (old approach
                            for reference purposes)
 -heapdump                  Create heap dump on client VM out of memory
                            error
 -help                      print this message
 -inheritanceTree           Cache inheritance tree during setup
 -junit <arg>               junit prefix
 -libraryPath <arg>         java library path to native libraries of the
                            project under test
                            classes on the classpath with the given
                            package prefix will be used, i.e. all classes
                            in the given package and sub-packages.
 -printStats                print class information (coverable goals)
 -projectCP <arg>           classpath of the project under test and all
                            its dependencies
 -seed <arg>                seed for random number generator
 -setup <arg>               Create evosuite-files with property file
 -startedByCtg              Determine if current process was started by a
                            CTG process
 -target <arg>              target classpath for test generation. Either a
                            jar file or a folder where to find the .class
                            files
 -writeDependencies <arg>   write the dependencies of a target class to
                            file

参数解释

怎样表示被测方法

回到标题,比如,我希望针对JsonWriter这个类中的 isLenient 生成测试用例

 public boolean isLenient() {
   return lenient;
 }

这个时候就需要用到参数

-Dtarget_method

如何赋值呢?

变化后的参数签名放到引号中

即isLenient()Z

变化规则参见

https://asm.ow2.io/asm4-guide.pdf

中的2.1.3节

怎样指向被测类

这里又有个坑,指向被测类,并不是JsonWriter.java,而是JsonWriter.class,后者在target文件夹下

因而用到参数

-projectCP .\target\classes\ 

表示类的时候层次关系用点隔开

-class com.google.gson.stream.JsonWriter 

其他参数

使用单个测试生成

-generateTests 

设置随机种子,使得能够复现

-seed 330 

这个参数是为了应对一个报错

-Dnew_statistics=false 

选择生成的用例的标准,这里选择分支覆盖,话说我也试过weakmutation,结果就是卡死

-criterion branch

参考

https://github.com/EvoSuite/evosuite/issues/261

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/419926.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Midjourney教程(二)——Prompt基本结构

Midjourney教程——Prompt基本结构 Basic Prompt 基础版本的prompt仅仅包含图片的描述&#xff0c;能够满足普通的需求&#xff0c;如下图所示 Advanced Prompt 高级版本的prompt主要包含三个部分&#xff0c;如下图所示 Image Prompts(可选) prompt第一部分是Image&#x…

TCP/IP协议详解

一.引言TCP/IP 是 TCP 和 IP 两种协议群的统称&#xff0c;具体来说&#xff0c;IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP 等都属于 TCP/IP 协议二.计算机网络体系结构分层计算机网络体系结构分层计算机网络体系结构分层不难看出&#xff0c;TCP/IP 与 OSI 在分层模块…

【C语言】迷宫问题

【C语言】迷宫问题一. 题目描述二. 思想2.1 算法---回溯算法2.2 思路分析图解三. 代码实现3.1 二维数组的实现3.2 上下左右四个方向的判断3.4 用栈记录坐标的实现3.5 完整代码四. 总结一. 题目描述 牛客网链接&#xff1a;https://www.nowcoder.com/questionTerminal/cf2490605…

STM32看门狗

目录 独立看门狗 IWDG 什么是看门狗&#xff1f; 独立看门狗本质 独立看门狗框图 独立看门狗时钟 分频系数算法&#xff1a; ​编辑 重装载寄存器 键寄存器 溢出时间计算公式 独立看门狗实验 需求&#xff1a; 硬件接线&#xff1a; 溢出时间计算&#xff1…

macOS设置环境变量和别名

因为我的mac所用shell是bash&#xff0c;所以本文中涉及的环境变量和别名配置均在~/.zshrc文件中,且在每次配置完成后&#xff0c;需要执行source ~/.zshrc命令使配置文件生效 环境变量 通过配置环境变量&#xff0c;我们可以将某个路径暴露到全局&#xff0c;这样可以在全局…

周总结(第一周)

3月份3个星期 *** 三个星代表不会 ** 再做 * 加强 题目1-完全二叉树(记忆) 考察数据结构 完全二叉树的深度deplog2(N1)1 完全二叉树节点的深度depiceil(log2(i1))向上舍入 完全二叉树的层次遍历&#xff0c;遍历每层的二叉树计算基础每层的总和&#xff0c;然后找出最大的和…

Talk预告 | 新加坡国立大学郑奘巍 AAAI‘23 杰出论文:大批量学习算法加速推荐系统训练

本期为TechBeat人工智能社区第486期线上Talk&#xff01; 北京时间3月30日(周四)20:00&#xff0c;新加坡国立大学二年级博士生——郑奘巍的Talk将准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “大批量学习算法加速推荐系统训练”&#xff0c;届时将分…

Kubernetes 多集群网络方案系列 2 -- Submariner 监控

Submariner 是一个用于连接 Kubernetes 集群的跨集群网络解决方案&#xff0c;可以实现集群之间的服务发现、网络通信等功能。 Prometheus 是一个开源的监控和告警系统&#xff0c;专门用于收集、存储和查询各种应用、系统和基础设施的实时指标数据。Prometheus 具备多维数据模…

Java开发 - MySQL主从复制初体验

前言 前面已经学到了很多知识&#xff0c;大部分也都是偏向于应用方面&#xff0c;在应用实战这条路上&#xff0c;博主一直觉得只有实战才是学习中最快的方式。今天带来主从复制给大家&#xff0c;在刚刚开始动手写的时候&#xff0c;才想到似乎忽略了一些重要的东西&#xf…

面试篇-揭开Spring Bean加载的神秘面纱

SpringBean加载完整过程 启动spring容器&#xff08;创建beanfactory&#xff09;->加载配置(注解、xml)->实例化bean(执行构造方法)->注入依赖->初始化bean&#xff08;设置属性值&#xff09;->使用->销毁 解析和读取 XML 配置文件或注解配置类&#xff0…

Linux嵌入式学习之Ubuntu入门(五)汇编语法学习

系列文章目录 一、Linux嵌入式学习之Ubuntu入门&#xff08;一&#xff09;基本命令、软件安装及文件结构 二、Linux嵌入式学习之Ubuntu入门&#xff08;二&#xff09;磁盘文件介绍及分区、格式化等 三、Linux嵌入式学习之Ubuntu入门&#xff08;三&#xff09;用户、用户组…

synchronized原理、偏向锁、轻量级锁、重量级锁、锁升级

文章目录Synchronized概念自增自减字节码指令临界区竞态条件基本使用原理查看synchronized的字节码指令序列Monitor对象的内存布局Mark Word是如何记录锁状态的偏向锁什么是偏向锁偏向锁延迟偏向偏向锁状态跟踪偏向锁撤销之调用对象HashCode偏向锁撤销之调用wait/notify轻量级锁…

Qt Quick - Drawer

Qt Quick - Drawer使用总结一、概述二、使用1、基础使用2、特点空间运行3、与内容转换相互挤占一、概述 Drawer提供了一个基于滑动的侧边面板&#xff0c;类似于经常在触控界面中使用的侧边面板&#xff0c;为导航提供了一个位置。 二、使用 1、基础使用 抽屉可以放置在内…

springcloud深度探索

中文官方文档&#xff1a;project - Spring Cloud Config - 《Spring Cloud中文文档》 - 书栈网 BookStackSpring Cloud ConfigFeaturesQuick StartSample Projects Spring Cloud为开发人员提供了工具&#xff0c;用以快速的在分布式系统中建立一些通用方案&#xff08;例如配…

CDP思科发现协议解析及C/C++代码实现

通常&#xff0c;大多数网络都有几个路由器或交换机&#xff0c;为了便于网络管理&#xff0c;使用网络图或网络图来告诉网络中存在什么类型的设备&#xff0c;以及所有设备如何相互连接&#xff0c;使用的IP地址以及它们属于哪个VLAN的信息。 CDP是一种专有的第二层思科网络协…

Table Transformer做表格检测和识别实践

计算机视觉方面的三大顶级会议&#xff1a;ICCV,CVPR,ECCV.统称ICE CVPR 2022文档图像分析与识别相关论文26篇汇集简介 论文&#xff1a; PubTables-1M: Towards comprehensive table extraction from unstructured documents是发表于CVPR上的一篇论文 作者发布了两个模型&…

22级ACM 4.16 周赛 题解

这场能题解写的感觉没多少其实&#xff08;真的不是因为懒&#xff09;&#xff0c;既然有人想要题解&#xff0c;那么就随便写一下吧&#xff0c;其实大部分的题都有人写出来&#xff0c;感觉这场真的不需要。 A 题 题解 Count Interval AtCoder - abc233_d_霾まる的博客-CS…

AI绘画王炸功能Control Net安装教程

原文&#xff1a;AI绘画王炸功能Control Net安装教程 - 知乎 AI绘画&#xff0c;最近两大王炸功能出圈了。 一个就是超真实超细节的美女图片&#xff0c;已经快和照片无异了&#xff0c;甚至有人用AI绘画的“女仆照片”开始招募游艇会了&#xff0c;具体教程可以查看Lora这篇…

一键生成元宇宙 AI又杀疯了

人类十几年的进步水平&#xff0c;AI用几个月就能轻易实现。在展示了超强的文本对话能力和一键生图功能后&#xff0c;AI大模型不打算停下&#xff0c;开始挑战搭建3D空间这一更高难度的动作。 这次&#xff0c;Facebook母公司Meta想当一把主导者。几天前&#xff0c;它的首席…

185-二35

Java185-二35单列集合顶层接口collection迭代器增强forlambda表达式list特有方法遍历数据结构数组Linkedlist集合泛型类&#xff0c;泛型方法&#xff0c;泛型结构泛型方法泛型的通配符泛型总结数据结构数据结构&#xff08;二叉树&#xff09;前序遍历数据结构&#xff08;二叉…