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_nameuser_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

镜像已经提供了 projectCPclassseed 和输出位置的配置。

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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络部署实战具体学习内容总结

网络部署实战具体学习内容总结 &#x1f4bb;网络部署实战课程通常旨在教授学生如何规划、配置、维护和优化计算机网络。这些课程涵盖了广泛的主题&#xff0c;以确保学生具备网络部署和管理所需的技能。 网络部署实战课程具体学习内容&#x1f447; 1️⃣网络架构设计及网络原…

AMRT3D使用指南:基于快速搭建3D场景的高频问答

在3D领域有所涉猎的朋友&#xff0c;相信对于3D引擎都不会陌生。自从数字孪生、3D应用提上战略规划后&#xff0c;开发者都希望尽快完成高质量的3D可视化开发实战&#xff0c;企业都希望高效集成三维能力&#xff0c;结合业务快速落地&#xff0c;最直接的方式就是通过3D引擎来…

DP读书:《openEuler操作系统》(七)FSCK与VFS虚拟文件系统

10min速通FSCK、原子操作与VFS 文件系统检查器1.检查inode表1) 遍历所有inode2) 修复多次引用数据块 2.检查目录结构3.检查目录的连接1) 检查根目录确保存在2) 遍历所有目录的inode,有问题的连接到/lostfound 4.检查引用次数5.检查位图一致性 日志1.主要的数据结构1) 原子操作描…

数据结构之串

数据结构之串 1、串的定义及基本运算2、串的存储结构3、串的模式匹配 数据结构是程序设计的重要基础&#xff0c;它所讨论的内容和技术对从事软件项目的开发有重要作用。学习数据结构要达到的目标是学会从问题出发&#xff0c;分析和研究计算机加工的数据的特性&#xff0c;以便…

git-生成证书、公钥、私钥、error setting certificate verify locations解决方法

解决方法 方法1-配置证书、公钥、私钥打开Git Bash设置名称和邮箱执行&#xff0c;~/.ssh执行&#xff0c;ssh-keygen -t rsa -C "这是你的邮箱"&#xff0c;如图&#xff1a;进入文件夹可以看到用记事本之类的软件打开id_rsa.pub文件&#xff0c;并且复制全部内容。…

P9842 [ICPC2021 Nanjing R] Klee in Solitary Confinement 题解(SPJ!!!)

[ICPC2021 Nanjing R] Klee in Solitary Confinement 题面翻译 给定 n , k n,k n,k 和一个长为 n n n 的序列&#xff0c;你可以选择对区间 [ l , r ] [l, r] [l,r] 的数整体加上 k k k&#xff0c;也可以不加。最大化众数出现次数并输出。 题目描述 Since the travele…

制造领域 智能制造典型场景参考指引

智能制造场景是智能工厂的核心组成部分&#xff0c;是指面向制造过程各个环节&#xff0c;通过新一代信息技术、先进制造技术的深度融合&#xff0c;部署高档数控机床与工业机器人、增材制造装备、智能传感与控制装备、智能检测与装配装备、智能物流与仓储装备、行业成套装备等…

Windows 下 PYQT开发环境的搭建:

(1)环境搭建&#xff1a; PYQT 安装包&#xff1a; Anaconda&#xff1a; Anaconda3-2023.09-0-Windows-x86_64 pycharm&#xff1a; pycharm 2019.3 下载包&#xff1a; Anaconda:下载成功 |蟒蛇 (anaconda.com) pycharm: pycharm安装包_pycharm用copilotchat资源-CSD…

利用 ChatGPT 高效搜索:举一反三的思考方式,高效查找解决方案

文章目录 基础思路举一反三Go 语言 Web 框架延伸思考思考结论 本文只是我的一些尝试&#xff0c;基于 ChatGPT 实现系统化快速搜索某编程语言的特定领域相关包或者基于其他语言类推荐落地方案的尝试。 这篇文章中描述的方式不一定是好方式&#xff0c;但应该会有一定的启示作用…

【Go学习】macOS+IDEA运行golang项目,报command-line-arguments,undefined

写在前面的话&#xff1a;idea如何配置golang&#xff0c;自行百度 问题1&#xff1a;通过idea的terminal执行go test报错 ✘ xxxxxmacdeMacBook-Pro-3  /Volumes/mac/.../LearnGoWithTests/hello  go test go: go.mod file not found in current directory or any parent …

Spring Boot的创建和使用

Spring的诞生是为了简化Java程序开发的&#xff0c;而Spring Boot的诞生是为了简化Spring程序开发的。 目录 Spring Boot 的优点 Spring Boot 项目创建 Spring Boot 目录介绍 Spring Boot 运行 Spring Boot 的优点 快速集成框架&#xff0c;Spring Boot 提供了启动添加依赖…

数据库面试题(开发者必看)

数据库面试题(开发者必看) 数据库常见面试题(开发者篇) 什么是存储过程&#xff1f;有哪些优缺点&#xff1f; 什么是存储过程&#xff1f;有哪些优缺点&#xff1f; 存储过程就像我们编程语言中的函数一样&#xff0c;封装了我们的代码(PLSQL、T-SQL)。 存储过程的优点&…