Auto-Unit-Test-Case-Generator -- java项目自动测试生成

0.Pre-预备知识:

0.1.Maven是什么?

[by Maven是什么?有什么作用?Maven的核心内容简述_maven是干什么用-CSDN博客 ]

Java 领域中最流行的自动化构建工具之一,Maven 作为 Java 项目管理工具,具有:

  • 包管理;
  • 许多插件--支持整个项目的开发、打包、测试及部署等;

0.2.传统项目 vs maven项目:

0.2.1传统工程:

  • jar包放置在项目中 ;
  • 当做 Java 项目需要第三方依赖包时,将别人打好的 Jar 包下载到本地,然后手动指定给项目。另外,比如版本控制,需要新版本怎么办,重新下载,重新指定,这个过程操作麻烦。;

0.2.2用了Maven :

  •  Maven工程真正jar包放置在仓库中,项目中只用jar包坐标【like 指针】;
  • 直接在 pom.xml 中添加 xml代码(所依赖jar包的坐标)即可添加指定包名、版本
0.2.2.1 pom.xml-- Maven的重要配置文件

(1)POM: Project Object Model  [项目对象模型];

(2)pom.xml 对于Maven工程是核心配置文件,构建过程的一切设置都在这个文件中进行配置;

技术上讲,任何包含 pom.xml 文件的目录也是有效的 Maven 项目。pom.xml 文件包含描述 Java 项目所需的一切。

0.2.2.2 Maven的坐标

使用三个向量[groupId+artifactId+version] 在仓库中唯一定位一个Maven工程(jar包)

e.g.:

[1] groupid:公司或组织域名倒序+项目名

<groupid>com.atguigu.maven</groupid>

[2] artifactid:模块名

<artifactid>Hello</artifactid>

[3] version:版本

<version>1.0.0</version>

0.3.Maven的常用命令

 注意:使用Maven命令,必须在pom.xml所在目录。【如 编译、测试、打包......】

[1] mvn clean:清理(删除原来编译,测试的 target目录,不会删除已经 install到仓库里的包)

[2] mvn compile:编译主程序(当前目录下生成 target,存放编译主程序后生成的字节码)

[3] mvn test-compile:编译测试程序(当前目录生成 target,存放编译测试程序之后生成的字节码)

[4] mvn test:执行测试(会生成一个目录 surefire- reports,保存测试结果)

[5] mvn package:打包主程序(会编译、编译测试、测试、并且按照pom.xml配置把主程序打包生成jar包或者war包

mvn clean install -Dmaven.test.skip=true

[6] mvn install:安装主程序(会把本工程打包,并且按照本工程的坐标保存到本地仓库中)

[7] mvn deploy:部署主程序(会把本工程打包,按照本工程的坐标保存到本地库中,并且还会保存到私服仓库中。还会自动把项目部署到web容器中)

1.Auto-Unit-Test-Case-Generator 

1.1 介绍

一个 单元测试领域下用例的自动生成工具;

github源码网址:

gauto-unit-test-case-generator/README_CN.md at main · traas-stack/auto-unit-test-case-generator (github.com)

1.2使用流程:

安装--对被测试工程编译--配置smartut.jar的setup环境--生成测试用例(单个类/整个模块)

1.2.1安装Auto-Unit-Test-Case-Generator:(即smart-ut)

mvn clean install -Dmaven.test.skip=true

1.2.2先对被测工程进行编译和依赖准备:

mvn clean compile
mvn clean install -Dmaven.test.skip=true(??)
mvn dependency:copy-dependencies

1.2.3 setup设置(即路径配置)

java -jar ./smartut.jar -setup example/target/classes/   example/target/dependency/*.jar

该命令运行 smartut.jar 文件,并传递 -setup 参数和两个路径(一个是class文件的目录,另一个是依赖的目录)给应用程序。

  • java -jar ./smartut.jar:
    • 启动 Java 程序,运行 smartut.jar 文件。
  • -setup:
    • 传递给 smartut.jar 的参数;
  • example/target/classes:
    • 指定包含编译后的类文件的目录。应用程序可能需要这个路径来加载类;
  • example/target/dependency/*.jar:
    • 指向包含依赖 JAR 文件的路径。通配符 *.jar 表示所有 JAR 文件

2.用例生成

“Class级别用例生成”指的是为单个类生成测试用例,专注于该类的功能和行为。

Module级别用例生成”指生成针对整个模块的测试用例。模块可以是一个(package);

Q:什么是包?

包不是一个类文件,而是一个目录结构:

  1. 目录结构:在 Java 项目中,包通常对应于文件系统中的目录。例如,包 com.example 对应于目录 com/example

  2. 类文件:包中的类文件是 .class 文件,这些文件包含了编译后的 Java 类的字节码。一个包可以包含多个类文件。

(1)Class级别用例生成

如果你想指定一个特定的类作为程序入口:

java -jar ./smartut.jar -class com.alipay.test.example

【这个命令运行 SmartUt 工具来生成 demo.A 类的测试代码。

-class demo.A 指定了要生成测试的目标类】

  1. java -jar ./smartut.jar: 运行 smartut.jar; -jar 告诉 Java要运行一个 JAR 文件。
  2. -class  com.alipay.test.example: 传递给 JAR 文件的参数。-class 是一个标志,com.alipay.test.example 是一个参数值,表示你希望 JAR 文件运行 com.alipay.test.example 这个类。

可能报错:【未找到target目标:No classpath has been defined for the target project

解决:【用 -projectCP 选项来指定项目的类路径。】  or setup设置环境变量【即路径】

这个选项告诉 SmartUt 工具在哪里找到你的目标类

java -jar ../smartut-master-1.1.0.jar -class demo.A -projectCP   /path/to/your/classe
#E.G.
java -jar ../smartut-master-1.1.0.jar  -class  demo.A -projectCP  ./target/classes/

(2)Module级别用例生成

java -jar ../smartut-master-1.1.0.jar  -target  ./target/classes/

 代码中的路径说明:

2.运行生成的测试用例

mvn test

TODO:

5.报错

注意:

[ERROR] The goal you specified requires a project to execute but there is no POM in this directory (/home/cys/SEtesting/example/smartut-report). Please verify you invoked Maven from the correct directory. -> [Help 1]
 

此类报错,因为该目录下无pom.xml配置文件;

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

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

相关文章

互联网全景消息(1)之RabbitMq基础入门

一、消息中间件 1.1消息队列回顾 消息队列中间件是分布式系统中重要的组件&#xff0c;主要解决应用解耦&#xff0c;异步消息&#xff0c;流量削锋等问题&#xff0c;实 现高性能&#xff0c;高可用&#xff0c;可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveMQ &a…

数据库mysql8.x中修改密码的方法

mysql数据库最新版本9.x都出来了&#xff0c;再不学就要被淘汰了&#xff01;&#xff01;这次使用的是8.0.39版本&#xff0c;大家可以去官网下载使用。 官网地址:https://dev.mysql.com/downloads/mysql/ 安装好后&#xff0c;默认密码是一串很难记忆的字符&#xff0c;记录…

day-46 旋转图像

思路 不能使用辅助数组&#xff0c;所以关键在于弄清楚旋转后坐标的变化规律。当矩阵的大小n为偶数时&#xff0c;以n/2行和n/2列的元素为起点&#xff0c;当矩阵的大小n为奇数时&#xff0c;以n/2行和&#xff08;n1&#xff09;/2列的元素为起点 解题过程 关键&#xff1a;旋…

【JavaWeb】Cookie、Session

文章目录 Cookie、Session一、Cookie&#xff08;客户端&#xff09;1、Cookie 的 特点2、Cookie 的 工作原理3、Cookie 的 基本操作5、Cookie 的 域名与路径6、Cookie 的 存活时间7、Cookie 的 删除 二、Session&#xff08;服务端&#xff09;1、Session 的 特点2、Session 的…

Python进阶————面向对象高级

面向对象高级 前言一、继承1.1. 单继承1.2. 多继承1.3. 方法重写1.4. 子类调用父类方法1.4.1 父类名.父类方法名()1.4.2 super().父类方法名() 1.5. 多层继承 二、封装2.1. 私有属性2.2. 私有方法 三、多态3.1. 多态的条件3.2. 多态的定义 四、面向对象的其他特性4.1. 对象属性…

【学习笔记】卫星通信NTN 3GPP标准化进展分析(四)- 3GPP Release18内容

一、引言&#xff1a; 本文来自3GPP Joern Krause, 3GPP MCC (May 14,2024) Non-Terrestrial Networks (NTN) (3gpp.org) 本文总结了NTN标准化进程以及后续的研究计划&#xff0c;是学习NTN协议的入门。 【学习笔记】卫星通信NTN 3GPP标准化进展分析&#xff08;一&#xff…

Codeforces Round 964 (Div. 4) A-E Java题解

比赛地址 Dashboard - Codeforces Round 964 (Div. 4) - Codeforces A题 签到题 给一个两位数 求各位上的数字和 直接对10取余加上本来的数除以10 // 注意类名必须为 Main, 不要有任何 package xxx 信息 // package Dduo; import java.io.*; import java.math.*; import j…

FFmpeg源码:av_rescale_rnd、av_rescale_q_rnd、av_rescale_q、av_add_stable函数分析

一、av_rescale_rnd函数 &#xff08;一&#xff09;av_rescale_rnd函数的声明 av_rescale_rnd函数声明在FFmpeg源码&#xff08;本文演示用的FFmpeg源码版本为7.0.1&#xff09;的头文件libavutil/mathematics.h中&#xff1a; /*** Rounding methods.*/ enum AVRounding {…

【Android自定义控件】Kotlin实现滚动效果的数字加减控件

前言 因业务上的需要&#xff0c;在APP中点餐时要有商品数目增减操作&#xff0c;数目增减的过程中有翻动的动画效果展现。在Android中有多种方式可以实现&#xff0c;本篇文章记录通过自定义View结合控件的平移动画相结合来实现此需求。 需求分析 根据上图分析控件的实现过程以…

力扣763-划分字母区间(Java详细题解)

题目链接&#xff1a;763. 划分字母区间 - 力扣&#xff08;LeetCode&#xff09; 前情提要&#xff1a; 因为本人最近都来刷贪心类的题目所以该题就默认用贪心方法来做。 贪心方法&#xff1a;局部最优推出全局最优。 如果一个题你觉得可以用局部最优推出全局最优&#xf…

如何在 Vim 中显示行号

前言 Vim 是一款功能强大的文本编辑器&#xff0c;在 Linux、Mac 和 Windows 上都有广泛的应用。对于开发人员来说&#xff0c;能够快速查看代码行号是一个非常实用的功能&#xff0c;尤其是在进行调试或阅读长文件时。本文将介绍如何在 Vim 中开启和关闭行号显示。 开启行号…

【STM32】RS485

RS485是常见的串口接口。 大部分图片来源&#xff1a;正点原子HAL库课程 专栏目录&#xff1a;记录自己的嵌入式学习之路-CSDN博客 目录 1 串口、UART、TTL、RS232、RS422、RS485的关系 1.1 串口 1.2 UART、TTL、RS232、RS422、RS485 1.3 常见串口标准的比较 …

JS 如何判断是否是IE浏览器

例子 if(!!window.ActiveXObject || "ActiveXObject" in window){alert("抱歉&#xff0c;不支持IE浏览器&#xff01;");return; }

亚马逊云技术深度解析与实战案例

亚马逊云技术深度解析与实战案例 引言 亚马逊云(Amazon Web Services, AWS)作为全球云计算技术的领导者,以其丰富的服务种类、强大的基础设施和持续的技术创新,为企业和个人开发者提供了前所未有的灵活性和扩展性。本文将深入探讨亚马逊云的核心技术,并通过一个具体的代…

vue el-tree主键id重复 添加自增id 以及原相同节点同步勾选 同步操作

树数据只提供了nodeId&#xff0c;且存在不同节点重复nodeId的问题&#xff0c;由于树组件的node-key需要唯一性&#xff0c;所有这个时候我们需要给数据添加自增id &#xff08;延申问题&#xff1a;操作某个节点的时候&#xff0c;同步操作与他nodeId相同的节点&#xff09;&…

【微机原理】v和∧区别

&#x1f31f; 嗨&#xff0c;我是命运之光&#xff01; &#x1f30d; 2024&#xff0c;每日百字&#xff0c;记录时光&#xff0c;感谢有你一路同行。 &#x1f680; 携手启航&#xff0c;探索未知&#xff0c;激发潜能&#xff0c;每一步都意义非凡。 在汇编语言和逻辑表达…

UE 【材质编辑】自定义材质节点

使用UE的材质编辑器&#xff0c;蓝图提供了大量的节点函数&#xff1a; 实际上&#xff0c;这是一段封装好的包含一串HLSL代码的容器。打开“Source/Runtime/Engine/Classes/Material”&#xff0c;可以看到很多不同节点的头文件&#xff1a; 照葫芦画瓢 以UMaterialExpressi…

★ 算法OJ题 ★ 力扣 LCR179 - 和为 s 的两个数字

Ciallo&#xff5e;(∠・ω< )⌒☆ ~ 今天&#xff0c;小诗歌剧将和大家一起做一道双指针算法题--和为 s 的两个数字~ 目录 一 题目 二 算法解析 三 编写算法 一 题目 LCR 179. 查找总价格为目标值的两个商品 - 力扣&#xff08;LeetCode&#xff09; 二 算法解析 …

MacOS使用FileZilla通过ssh密钥文件连接远程服务器(已解决)

需求描述 mac电脑,使用filezilla通过FTP连接远程服务器,使用ssh密钥文件代替密码。 版本信息 MacOS:Sonoma 14.5 M3芯片 FileZilla:3.66.5 在这里插入图片描述 连接 1. 创建站点 打开filezilla工具,右上角选择“文件 -> 站点管理器”,打开站点管理器弹窗。 2.…

2024“钉耙编程”中国大学生算法设计超级联赛(9)

传送门 1005 怪物猎人 如果全用 x 和 全用 y 攻击的轮次不同那么奇偶轮次都可以击败怪物&#xff1b;否则只有奇数轮次或者偶数轮次能够击败怪物。 #include <bits/stdc.h> using namespace std;#define int long longinline int read() {int x 0, f 1; char c get…