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:什么是包?
包不是一个类文件,而是一个目录结构:
目录结构:在 Java 项目中,包通常对应于文件系统中的目录。例如,包
com.example
对应于目录com/example
。类文件:包中的类文件是
.class
文件,这些文件包含了编译后的 Java 类的字节码。一个包可以包含多个类文件。
(1)Class级别用例生成
如果你想指定一个特定的类作为程序入口:
java -jar ./smartut.jar -class com.alipay.test.example
【这个命令运行 SmartUt 工具来生成 demo.A 类的测试代码。
-class demo.A 指定了要生成测试的目标类】
- java -jar ./smartut.jar: 运行 smartut.jar; -jar 告诉 Java要运行一个 JAR 文件。
- -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配置文件;