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

2024-09-02 05:12

本文主要是介绍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配置文件;

这篇关于Auto-Unit-Test-Case-Generator -- java项目自动测试生成的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1129088

相关文章

Java实现检查多个时间段是否有重合

《Java实现检查多个时间段是否有重合》这篇文章主要为大家详细介绍了如何使用Java实现检查多个时间段是否有重合,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录流程概述步骤详解China编程步骤1:定义时间段类步骤2:添加时间段步骤3:检查时间段是否有重合步骤4:输出结果示例代码结语作

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

Java判断多个时间段是否重合的方法小结

《Java判断多个时间段是否重合的方法小结》这篇文章主要为大家详细介绍了Java中判断多个时间段是否重合的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录判断多个时间段是否有间隔判断时间段集合是否与某时间段重合判断多个时间段是否有间隔实体类内容public class D

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

Java覆盖第三方jar包中的某一个类的实现方法

《Java覆盖第三方jar包中的某一个类的实现方法》在我们日常的开发中,经常需要使用第三方的jar包,有时候我们会发现第三方的jar包中的某一个类有问题,或者我们需要定制化修改其中的逻辑,那么应该如何... 目录一、需求描述二、示例描述三、操作步骤四、验证结果五、实现原理一、需求描述需求描述如下:需要在

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.