Auto-Unit-Test-Case-Generator工具--java项目测试用例自动生成

1.Auto-Unit-Test-Case-Generator 【别称smart-ut】

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环境;

具体使用 :生成测试用例(单个类/整个模块)【见 2.用例生成

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

在github网站下载对应smartut-master.jar包。

1.2.2 编译+安装依赖

对被测项目进行编译和install依赖:

注意输入命令的目录:主项目下【主pom.xml同级目录】 :

e.g.:

mvn clean compile
mvn clean install -Dmaven.test.skip=true(跳过测试的install)
mvn dependency:copy-dependencies

关于 mvn install + mvn dependency:copy-dependencies

作用:
下载所有依赖到本地仓库 + 复制这些依赖到 target/dependency;

mvn dependency:copy-dependencies 命令会从 Maven 本地仓库中复制依赖项。

它的来源:Maven 本地仓库:位于 ~/.m2/repository 目录。

依赖文件通常会被复制到 target/dependency 目录下。

Maven 根据 pom.xml 文件中列出的<dependencies> 来确定需要复制的 JAR 文件。

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/

 代码中的路径说明:

3.运行生成的测试用例

mvn test

可能出现部分函数/库 报错找不到的情况;

比如测试代码里的各种import[这里是 junit / smartut]相关的报错;

import static org.junit.Assert.*;

import demo.B;

import org.junit.Test;

import static org.junit.Assert.*;

import demo.C;

import org.junit.AfterClass;

import org.smartut.runtime.sandbox.Sandbox;

注意,要添加运行时依赖【可以理解为运行时需要的库/函数】[加在主pom.xml下]

3.1 Q: 什么是运行时依赖?

Maven 中的运行时依赖

在 Maven 中,可以通过 <scope> 标签来指定依赖的作用范围。常见的作用范围包括:

  • compile:默认的依赖范围,表示该依赖既用于编译也用于运行。
  • provided:表示该依赖在编译时需要,但在运行时由容器提供(例如 Servlet 容器提供的 JSP API)。
  • runtime:表示该依赖在编译时不需要,但在运行时需要。
  • test:表示该依赖仅用于测试,不在生产环境中使用。

e.g.:【pom.xml里的<dependency>下的<scope>

<dependencies>
    <dependency>
        <groupId>com.example</groupId>
        <artifactId>runtime-library</artifactId>
        <version>1.0.0</version>
        <scope>runtime</scope>
    </dependency>
</dependencies>

【下图是该项目的readme中的依赖添加部分】

完成这里就可以正常运行生成的test-case了。之后我会慢慢整理一些报错解决。

TODO:

各类报错及解决:

【9.27整理完 v1.0】 Maven项目常见各类 Q&A-CSDN博客

1.小tips1:

如果项目巨大,需要先在主项目pom.xml一级 mvn install; 【保证所有的依赖都安装到本地】

然后可对不测试的无关modules B,C,D注释掉,不对其生成,只生成你需要的模块A的test-case;

-【Q:既然全项目的install用时几个小时那么长,为什么不能注释掉无关模块再install + test呢?】

- A : 因为模块之间有依赖关系,A模块依赖于B,那么B模块的dependency没有install到本地,A模块的test-case就没法运行;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值