当前位置: 首页 > news >正文

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.mrgr.cn/news/17439.html

相关文章:

  • 【JVM】垃圾回收与安全点 学习记录
  • Java EE
  • 系统监控和命令行环境
  • Day90 代码随想录打卡|贪心算法篇---合并区间
  • SpringBoot+Vue实现大文件上传(断点续传-后端控制(一))
  • linux head
  • 【Qt】工具栏
  • EventBus使用详解
  • 【Java】—— Java面向对象进阶:继承小练习-Java中实现圆柱体类及其体积计算
  • git中的分支是什么?分支有哪些好处?如何建立分支?
  • 由键盘输入一个两位数,将其个位数与十位数互换后变成一个新的数,输出这个数。
  • PHP学习
  • 周记-2024年第35周8.26~9.1:但求有功,不求无过
  • 战略设计(Strategic Design)
  • 【编程底层思考】多线程编程中哪些行为和操作会导致线程让出cpu
  • Jenkins配置使用LDAP的用户和密码登录
  • VastBase——VPatch版本控制
  • 花店鲜花管理与推荐系统+Python+Django网页界面+管理系统+计算机课设
  • J.U.C Review - 白话Java内存模型
  • 9.1写论文