test-02-test case generate 测试用例生成 EvoSuite 介绍
拓展阅读
junit5 系列
基于 junit5 实现 junitperf 源码分析
Auto generate mock data for java test.(便于 Java 测试自动生成对象信息)
Junit performance rely on junit5 and jdk8+.(java 性能测试框架。性能测试。压测。测试报告生成。)
拓展阅读
自动生成测试用例
什么是 EvoSuite?
EvoSuite是一个自动生成Java类的JUnit测试套件的工具,其目标是满足代码覆盖率标准,如分支覆盖率。
它采用基于遗传算法的演化方法来生成测试套件。
为了提高可读性,生成的单元测试被最小化,并向测试中添加了捕获被测试类当前行为的回归断言。
使用 EvoSuite
有不同的方式使用 EvoSuite:
1. 命令行中使用 EvoSuite
EvoSuite作为一个可执行的jar文件提供,可以通过以下方式调用:
java -jar evosuite.jar <options>
生成测试套件的命令示例:
java -jar evosuite.jar <target> [options]
其中 <target> 可以是一个类:
-class <ClassName>
或一个包前缀,此时 EvoSuite 尝试为类路径中与该前缀匹配的每个类生成一个测试套件:
-prefix <PrefixName>
或一个类路径条目,此时 EvoSuite 尝试为给定类路径条目中的每个类生成一个测试套件:
-target <jar file or directory>
最重要的选项是设置类路径,使用标准的Java类路径语法:
-projectCP <classpath>
更多选项,请查阅文档:
java -jar evosuite.jar -help
2. Docker Hub 上使用 EvoSuite
EvoSuite在Docker Hub上提供了一个容器镜像。你可以拉取该镜像:
docker pull evosuite/evosuite:<version>
或手动在本地构建该镜像:
git clone https://github.com/EvoSuite/evosuite.git
cd evosuite
docker build -f Dockerfile.java8 . --tag evosuite/evosuite:latest-java-8
docker build -f Dockerfile.java11 . --tag evosuite/evosuite:latest-java-11
可以这样调用 EvoSuite:
docker run -it -u ${UID} -v ${PWD}:/evosuite evosuite/evosuite:<version>-java-<java_version> <options>
它假设要测试的项目位于调用命令的当前目录中。当前目录 ${PWD} 映射到容器内的 /evosuite 目录。这也是 EvoSuite 的工作目录。所有的结果都将映射回主机系统上的目录。-u ${UID} 确保结果具有与启动命令的用户相同的文件所有权。
当 EvoSuite 需要在后台运行时,可以使用 -d 代替 -it。
3. 大规模实验运行器
Docker 镜像还提供了一个标签(evosuite/evosuite:<version>-java-<java_version>-experiment),以便轻松运行大规模实验。可以通过从 Docker Hub 拉取该镜像获取:
docker pull evosuite/evosuite:<version>-experiment
或手动在本地构建该镜像:
git clone https://github.com/EvoSuite/evosuite.git
cd evosuite
git checkout <version> # 例如 git checkout v1.1.0
docker build -f Dockerfile.java8-experiment . --tag evosuite/evosuite:<version>-java-8-experiment
docker build -f Dockerfile.java11-experiment . --tag evosuite/evosuite:<version>-java-11-experiment
实验运行器可以这样调用:
docker run -it -u ${UID} -v ${PWD}:/evosuite evosuite/evosuite:<version>-java-<java_version>-experiment [<options>] <configurations_file> <projects_file>
它假设当前工作目录下有一个名为 projects 的文件夹,其中包含每个要测试项目的子目录,包含该项目的所有jar文件。当前目录还应包含两个csv文件:
- 一个用于实验不同配置的文件,包含两列用于
configuration_name和user_configuration - 一个用于每个项目的类的文件,包含两列用于
project_name(应与projects下的文件夹相同)和class(应为完整的类路径)
例如,目录结构的示例为:
./projects/<project1_name>/<project 1的第一个jar文件>
./projects/<project1_name>/<project 1的第二个jar文件>
./projects/<project2_name>/<project 2的jar文件>
./configurations.csv
./projects.csv
configurations.csv 文件的内容示例为:
configuration_name,user_configuration
default60,-generateMOSuite -Dalgorithm=DynaMOSA -Dsearch_budget=60 -Dassertion_timeout=120 -Dminimization_timeout=120
default120,-generateMOSuite -Dalgorithm=DynaMOSA -Dsearch_budget=120 -Dassertion_timeout=120 -Dminimization_timeout=120
镜像已经提供了 projectCP、class、seed 和输出位置的配置。
projects.csv 文件的内容示例为:
project_name,class
<project1_name>,com.project1.application
该镜像将实验的输出放置在以下位置(在当前目录内):
./results/<configuration_name>/<project_name>/<class_name>/logs/<round>
./results/<configuration_name>/<project_name>/<class_name>/reports/<round>/
./results/<configuration_name>/<project_name>/<class_name>/tests/<round>/
运行该镜像时,它将在当前目录中自动生成一个名为 SEEDS 的文件,其中包含它用于实验的种子。如果要复制实验,可以将该文件放回同一位置,而不是创建新的种子,镜像现在将使用这些种子。
如果要手动设置类路径而不是让脚本为您确定一个,可以在每个项目文件夹内放置名为 ‘CLASSPATH’ 的文件,其中第一行是该项目的
类路径。
当 EvoSuite 需要在后台运行时,可以使用 -d 代替 -it。

相关文章:
test-02-test case generate 测试用例生成 EvoSuite 介绍
拓展阅读 junit5 系列 基于 junit5 实现 junitperf 源码分析 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息) Junit performance rely on junit5 and jdk8.(java 性能测试框架。性能测试。压测。测试报告生成。) 拓展阅读 自动生成测试用例 什么…...
1.单表查询
作业要求 素材: 表名:worker-- 表中字段均为中文,比如 部门号 工资 职工号 参加工作 等 CREATE TABLE worker ( 部门号 int(11) NOT NULL, 职工号 int(11) NOT NULL, 工作时间 date NOT NULL, 工资 float(8,2) NOT NULL, 政治面貌 varc…...
FFmpeg 的使用与Docker安装流媒体服务器
本文阐述的均为命令行的使用方式,并不牵扯FFmpeg 的 C音视频开发内容,补充一句,C的资料真的少,能把C学好的人,我真的是觉得巨佬。 我主要是使用FFmpeg 推流方面的知识,案例大都是靠近这方面。 一、FFmpeg…...
Qt QListWidget列表框控件
文章目录 1 属性和方法1.1 外观1.2 添加条目1.3 删除条目1.4 信号和槽 2 实例2.1 布局2.2 代码实现 Qt中的列表框控件,对应的类是QListWidget 它用于显示多个列表项,列表项对应的类是QListWidgetitem 1 属性和方法 QListWidget有很多属性和方法…...
小知识分享2
文章目录 1.TCP/IP协议2.四次挥手断开连接3.TCP的三次握手和四次挥手4.在什么情况下需要设置WINS Proxy?5.用户与用户账户有什么不同?为什么需要使用用户账户? 1.TCP/IP协议 1、TCP/IP、Transmission Control Protocol/internet Protocol,传…...
【Golang开源项目】Golang高性能内存缓存库BigCache设计与分析
项目地址 BigCache 是一个快速,支持并发访问,自淘汰的内存型缓存,可以在存储大量元素时依然保持高性能。BigCache将元素保存在堆上却避免了GC的开销。 背景介绍 BigCache的作者在项目里遇到了如下的需求: 支持http协议支持 10…...
Elasticsearch 7.8.0从入门到精通
安装Elasticsearch 7.8.0 官网:Elasticsearch 7.8.0 | Elastic 大家下载所需要的安装包即可。然后解压缩: Elasticsearch是通过java编写的,所以自带jdk。多好,下载Elasticsearch赠送jdk 0.0,不过一般我们用自己的jdk…...
寻找最富裕的小家庭 - 华为OD统一考试
OD统一考试(C卷) 分值: 100分 题解: Java / Python / C++ 题目描述 在一棵树中,每个节点代表一个家庭成员,节点的数字表示其个人的财富值,一个节点及其直接相连的子节点被定义为一个小家庭现给你一棵树,请计算出最富裕的小家庭的财富和。 输入描述 第一行为一个数N,…...
ssm基于Java的药店药品信息管理系统的设计与实现论文
摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,药品信息因为其管理内容繁杂,管理数量繁多导致手工进行处理不能满足广大…...
Word插件-大珩助手-手写电子签名
手写签名 支持鼠标写,支持触摸屏写,点击画笔按钮切换橡皮擦,支持清空画板重写,点击在word中插入签名,可插入背景透明的签字图 素材库-保存签名 将写好的签字图复制粘贴到素材库中,以便永久使用ÿ…...
Edge扩展插件安装位置
根据所获取的信息,Microsoft Edge的扩展插件安装位置和配置方式可以通过不同的方法管理。以下是一个大纲,概述了如何配置和管理Edge扩展插件: Edge扩展插件安装和管理大纲 了解扩展插件的安装模式 安装模式的选项:了解allowed、…...
Git将本地项目上传到Gitee仓库
1.右键点击文件,点击Git Bash Here,进入git窗口 2.初始化本地仓库 git init3.将本地仓库与远程仓库建立连接 git remote add origin 远程仓库地址远程仓库地址在gitee仓库复制即可 4.将远程仓库的文件拉到本地仓库中 git pull origin master5.将本地文件全部上传…...
linux环境安装docker
一、Docker是什么? 当我们开发一个应用程序时,通常需要配置和安装各种软件、库和依赖项。而这些环境配置可能会因为不同的操作系统或版本而存在差异,导致应用在不同环境中运行出现问题。 Docker就像是一个集装箱,可以将应用程序及其所有依…...
机器人技能学习-robosuite-0-入门介绍
文章目录 前言模块介绍实战案例1:从 demo 中创建自己的 env案例2:更换属于自己的物体 前言 资料太少、资料太少、资料太少,重要的事说三边,想根据自己实际场景自定义下机器人,结果发现无路可走,鉴于缺少参…...
【工具】tmux简单用法
tmux 是一个终端复用工具,允许你在单个终端窗口中运行多个终端会话,并在它们之间切换。它提供了分割窗格、多窗口和会话管理等功能,使得在终端中更加高效地工作。 以下是一些 tmux 的基本概念和简单应用: 会话 (Session): 一个 t…...
使用 C++/WinRT 的错误处理
本主题讨论了处理使用 C/WinRT 编程时出现的错误的策略。 更多常规信息和背景,请参阅错误和异常处理 (Modern C)。 避免捕获和抛出异常 建议继续编写异常安全代码,但最好尽量避免捕获和抛出异常。 如果没有异常处理程序,Windows 将自动生成错…...
计算机基础专升本笔记九-Windows7基础(一)Windows 7 介绍
计算机基础专升本笔记九-Windows7基础 一、Windows简介 Microsoft公司从1983年开始研制Windows系统,最初的研制目标是在MS-DOS的基础上提供一个多任务的图形用户界面。 1985年,第一个版本的Windows 1.0问世,它是一个具有图形用户界面的系…...
LeetCode1109. Corporate Flight Bookings
文章目录 一、题目二、题解 一、题目 There are n flights that are labeled from 1 to n. You are given an array of flight bookings bookings, where bookings[i] [firsti, lasti, seatsi] represents a booking for flights firsti through lasti (inclusive) with sea…...
视觉SLAM十四讲|【五】相机与IMU时间戳同步
视觉SLAM十四讲|【五】相机与IMU时间戳同步 相机成像方程 Z [ u v 1 ] [ f x 0 c x 0 f y c y 0 0 1 ] [ X Y Z ] K P Z \begin{bmatrix} u \\ v \\ 1 \end{bmatrix} \begin{bmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix} \…...
js null和undefined的区别
null和undefined在JavaScript中都表示“无”的概念,但它们在使用和含义上有一些重要的区别。 含义: null 是一个表示“无”的对象,当转换为数值时结果为0。 undefined 是一个表示“缺少值”的原始值,当转换为数值时结果为NaN。…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
