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 的…

【学习笔记】卫星通信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…

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

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

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

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

【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; }

【微机原理】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.…

AI搜索:重塑信息获取的新纪元

在信息爆炸的时代&#xff0c;如何快速、准确地获取所需信息成为了每个人面临的挑战。传统的搜索引擎虽然在一定程度上解决了这一问题&#xff0c;但广告干扰、结果冗余、内容质量参差不齐等问题仍让用户体验大打折扣。随着AI技术的不断发展&#xff0c;AI搜索产品以其独特的优…

docker安装配置、docker命令

一、CentOS7安装docker 1、安装 Docker CE 支持 64 位版本 CentOS 7&#xff0c;并且要求内核版本不低于 3.10&#xff0c; CentOS 7 满足最低内核的要求&#xff0c;所以我们在CentOS 7安装Docker。 卸载旧docker 如果之前安装过旧版本的Docker&#xff0c;可以使用下面命令…

1999-2023年上市公司年报文本数据(PDF+TXT)

1999-2023年上市公司年报文本数据&#xff08;PDFTXT&#xff09; 1、时间&#xff1a;1999-2023年 2、来源&#xff1a;上市公司年度报告 3、范围&#xff1a;A股上市公司&#xff0c;5600企业&#xff0c;6.3W份 4、格式&#xff1a;PDFTXT 5、下载链接&#xff1a; 199…

c++11新特性-lambda表达式

1. 概念 lambda表达式实际上是一个匿名类的成员函数&#xff0c;该类由编译器为lambda创建&#xff0c;该函数被隐式地定义为内联。因此&#xff0c;调用lambda表达式相当于直接调用它的operator()函数&#xff0c;这个函数可以被编译器内联优化&#xff08;建议&#xff09;。…

Ubuntu服务器时间和本地时间不一致怎么解决——Linux的Local Time和RTC time

最近一直在搞大模型的相关工作&#xff0c;所以一直在用Linux服务器&#xff0c;前面的文章里也提到了&#xff0c;我用的是一台Dell PowerEdge R730xd。 但在使用中发现&#xff0c;IDRAC中的日志时间和本地时间存在时差&#xff0c;大概相关8小时。 对于技术人员&#xff0c…

数据结构:树形结构(树、堆)详解

数据结构&#xff1a;树形结构&#xff08;树、堆&#xff09;详解 一、树&#xff08;一&#xff09;树的性质&#xff08;二&#xff09;树的种类二叉树多叉树满N叉树完全N叉树 &#xff08;三&#xff09;二叉树的实现1、二叉树结构定义2、二叉树功能实现&#xff08;1&…