Junit(Java单元测试)

配置文件

        要想使用 Junit 进行单元测试需要引入以下第三方库:

引入后可以使用 @Test,@BeforeEach等注解

        <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api --><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.9.1</version><scope>test</scope></dependency>

        引入后可以进行”参数化“

        <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-params --><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-params</artifactId><version>5.9.1</version><scope>test</scope></dependency>

        引入后可管理测试用例,如 @Suite

        <!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform-suite --><dependency><groupId>org.junit.platform</groupId><artifactId>junit-platform-suite</artifactId><version>1.9.1</version><scope>test</scope></dependency>
        <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine --><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-engine</artifactId><version>5.9.1</version><scope>test</scope></dependency>

注解

@Test 标注测试方法

public class JunitTest {@Test   //标注下面的方法是测试方法public void test01(){System.out.println("==========这是第一个测试用例==========");}@Testpublic void test02(){System.out.println("==========这是第二个测试用例==========");}
}

@BeforeAll 和 @AfterAll 标注在测试之前和之后执行的方法

    @BeforeAllstatic void Start(){System.out.println("********** 测试开始 **********");}@AfterAllstatic  void End(){System.out.println("********** 测试结束 **********");}

@BeforeEach 和 @AfterEach 标注在每条测试之前和之后执行的方法

    @BeforeEachpublic void startEach(){System.out.println("********** 测试开始 **********");}@AfterEachpublic void endEach(){System.out.println("********** 测试结束 **********");}

@TestMethodOrder 和 @Order(优先级) 标注测试方法的执行顺序

        如下代码设置 test01 的执行优先级为 2 小于 test02 的执行优先级 1,所以 test02 测试方法先执行,其次才是 test01 方法

// @TestMethodOrder 指定用哪个方法来进行测试方法排序
//MethodOrderer.OrderAnnotation.class 表示用注解排序测试方法
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class JunitTest {//设置测试方法执行的优先级,2 的优先级小于 1@Order(2)//标注下面的方法是测试方法@Testpublic void test01(){System.out.println("==========这是第一个测试用例==========");}@Order(1)@Testpublic void test02(){System.out.println("==========这是第二个测试用例==========");}
}

@ParameterizedTest 将测试方法参数化

        注意:使用 @ParameterizedTest 注解就已经代表该方法是一个测试方法,不需要再使用 @Test 方法,否则会报错

@ValueSource 单参数

        如下代码,会依次将 @ValueSource 注解中定义的整数作为参数依次传入 test03 方法中

    //将测试方法参数化@ParameterizedTest//设置参数的数据源,只支持一个参数@ValueSource(ints = {1,2,3,4})public void test03(int x){System.out.println(x);}

@CsvSource 多参数

         如下代码,会依次将 @CsvSource 注解中定义的多组数据作为参数依次传入 test04 方法中

    @ParameterizedTest//设置参数的数据源,支持多个参数@CsvSource({"雨林, 20","小菊,22"})void test04(String name,int age){System.out.println("name:"+name+" age:"+age);}

@CsvFileSource 通过文件传递多参数

test05.txt 文件内容

张三,28
李四,19
王五,20

        如下代码,以 test05.txt 文件中的数据作为参数,传入 test05 测试方法中

    @ParameterizedTest//通过文件传递多参数@CsvFileSource(resources = "test05.txt")void test05(String name,int age){System.out.println("name:"+name+" age:"+age);}

        注意,如果该测试方法在包中,那么 test05.txt 文件也要放到相同名称的包中

        如下图,测试方法在 example 包中

        将 test05.txt 文件放到 resources 的 example 包中

@MethodSource 通过方法传递多参数

        如下代码,以 Generate 方法中定义的数据作为参数,传入 test06 测试方法中

    @ParameterizedTest//通过方法传递参数@MethodSource("Generate")void test06(String name,int age){System.out.println("name:"+name+" age:"+age);}

Generate 方法

public static Stream<Arguments> Generate() {return Stream.of(Arguments.arguments("张三",18),Arguments.arguments("李四",20));}

@Suite 测试套件(管理测试顺序)

        测试套件,用于管理测试顺序(有许多类和包都用于测试,要管理它们的执行顺序)

@SelectClasses 管理测试类的执行顺序

//测试套件,用于管理测试顺序(有许多类和包都用于测试,要管理它们的执行顺序)
@Suite
//管理测试类的执行顺序
@SelectClasses({JunitTest.class,JunitTest1.class})
public class RunTest {
}

        如下图,先执行 JunitTest,再执行 JunitTest1

@SelectPackages 管理包的执行顺序

//测试套件,用于管理测试顺序(有许多类和包都用于测试,要管理它们的执行顺序)
@Suite
//管理测试包的执行顺序
@SelectPackages(value = {"example"})
public class RunTest {
}

        如下图,执行了 example 包下的 JunitTest

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/849158.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

eclipse添加maven插件

打开eclipse菜单 Help/Install New SoftwareWork with下拉菜单选择 2022-03 - https://download.eclipse.org/releases/2022-03‘type filter text’搜索框中输入 maven选择 M2E - Maven Integration for Eclipse一路next安装&#xff0c;重启eclipseImport项目时&#xff0c;就…

ESP8266在阿里云上线(arduino)

电脑连接上ESP8266的板子 在arduino编写代码&#xff08;arduino按照之前的配置&#xff0c;已安装好esp的开发板和几个库ArduinoJson我选了5.的版本&#xff0c;PubSubclient,Crypto,AliyunIoTSDK并且修改pubsubclient的参数&#xff09; 在项目&#xff0c;加载库&#xff0c…

Elixir学习笔记——二进制、字符串和字符列表

在“基本类型”中&#xff0c;我们学习了一些关于字符串的知识&#xff0c;并使用 is_binary/1 函数进行检查&#xff1a; iex>string "hello" "hello" iex>is_binary(string) true 在本章中&#xff0c;我们将明确二进制到底是什么、它们与字符串…

【RuoYi】如何解决Postman无法访问RuoYi中的接口数据

一、前言 最近&#xff0c;写项目要求需要将数据返回&#xff0c;指定的接口&#xff0c;并且需要使用Postman来测试接口数据&#xff0c;看是否能够请求到数据。然后项目用的是RuoYi的框架&#xff0c;RuoYi使用了SpringSecurity来做的安全框架&#xff0c;所以在访问的时候&a…

【Linux】ip命令详解

Linux网络排查 目录 一、ip命令介绍 1.1 ip命令简介 1.2 ip命令的由来 二、ip命令使用帮助 2.1 ip命令的help帮助信息 2.2 ip命令对象介绍 2.3 ip命令选项介绍 三、查看网络信息 3.1 显示当前网络接口信息 3.2 显示网络设备运行状态 3.3 显示详细设备信息 3.4 查看…

基于.NetCore和ABP.VNext的项目实战八:使用Redis缓存数据

这里将集成Redis,使用Redis来缓存数据,在appsettings.json配置Redis的连接字符串 //appsettings.json ..."Caching": {"IsOpen": "true","RedisConnectionString": "127.0.0.1:6379,ConnectTimeout=15000,SyncTimeout=5000&qu…

面向大模型的存储加速方案

参考&#xff1a;面向大模型的存储加速方案设计和实践-百度开发者中心 (baidu.com) 对于一个典型的训练来说&#xff0c;可能迭代多轮 epoch。在每个 epoch 内&#xff0c;首先需要对数据集进行随机打散&#xff0c;然后将打散后的数据划分为若干 batch&#xff0c;每读取一个 …

智谱AI最新开源模型CHATGLM4-9B试用

智谱AI最近开源了GLM4-9B模型。之前已开源chatglm1到chatglm3&#xff0c;相比前面开源的相比GLM3-6B有了大幅度提升。本次开源基本的GLM4-9B&#xff0c;还开源了对话版GLM-4-9B-Chat&#xff0c; 多模态版GLM-4V-9B&#xff0c; 长文本版GLM-4-9B-Chat-1M。 在语义、数学、推…

软件杯 题目:基于深度学习卷积神经网络的花卉识别 - 深度学习 机器视觉

文章目录 0 前言1 项目背景2 花卉识别的基本原理3 算法实现3.1 预处理3.2 特征提取和选择3.3 分类器设计和决策3.4 卷积神经网络基本原理 4 算法实现4.1 花卉图像数据4.2 模块组成 5 项目执行结果6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基…

Nginx location 配置:从入门到精通

Nginx的 location 配置是Nginx服务器配置中非常关键的一部分&#xff0c;它决定了如何响应不同的HTTP请求。以下是关于Nginx location配置的详细解释&#xff1a; 一、基本语法 location指令的基本语法如下&#xff1a; location [modifier] pattern {# 配置内容 }其中&#…

零拷贝技术

背景 磁盘可以说是计算机系统重最慢的硬件之一&#xff0c;读写速度相对内存10以上&#xff0c;所以针对优化磁盘的技术非常的多&#xff0c;比如&#xff1a;零拷贝、直接I/O、异步I/O等等&#xff0c;这些优化的目的就是为了提高系统的吞吐量&#xff0c;另外操作系统内核中的…

如何实现观察者模式和发布-订阅模式?

要实现观察者模式和发布-订阅模式&#xff0c;你需要遵循一些基本的步骤和原则。下面分别介绍这两种模式的实现方法。 如何实现观察者模式&#xff1a; 观察者模式&#xff08;Observer Pattern&#xff09;是一种行为设计模式&#xff0c;用于维护观察者&#xff08;Observe…

GAT1399协议分析(8)--ImageInfo字段详解

一、官方定义 接上一章节字段消息返回内容 "ImageInfo": { "ImageID": "34078100001190001002012024060513561300065", "InfoKind": 0, "ImageSource": "…

eclipse怎么导入python项目

python项目导入eclipse的步骤&#xff1a; 1、首先&#xff0c;打开Eclipse集成开发程序&#xff0c;在菜单栏上点击“File(F)”&#xff0c;在弹出来的列表中点击“导入&#xff08;I&#xff09;...”。 2、在弹出来的“导入”窗口中&#xff0c;选择“常规”选项中的“现有…

【uni-app】开发问题汇总

文章目录 1、APP获取dom2、添加页面&#xff0c;参考其他页面&#xff0c;国际化就是对应页面的导航的国际化"navigationBarTitleText": "%m.i.ForgetPaymentPassword.bartitle%",3、setStatusBarStyle这个导航栏设置方法不要了&#xff0c;导航栏现在都用…

SpringCloud Gateway中Filters详细说明

前面 https://blog.csdn.net/J080624/article/details/139494909 我们研究了GateWay中各种路由断言的使用。SpringCloud GateWay 还提供了各种过滤器用来对请求和响应进行处理。 官网地址&#xff1a;SpringCloud Gateway Filter 【1】GatewayFilter Factories 路由过滤器允…

java使用websocket遇到的问题

java使用websocket的bug 1 websocket连接正常但是收不到服务端发出的消息java的websocket并发的时候导致连接断开&#xff08;看着连接是正常的&#xff0c;但是实际上已经断开&#xff09; 1 websocket连接正常但是收不到服务端发出的消息 java的websocket并发的时候导致连接断…

oracle中varchar和varchar2的区别

在Oracle数据库中&#xff0c;VARCHAR和VARCHAR2都是用于存储可变长度字符数据的数据类型&#xff0c;但它们之间有一些关键的区别。以下是这两者的主要区别&#xff1a; 数据类型来源&#xff1a; VARCHAR&#xff1a;这是标准SQL提供的类型&#xff0c;具有广泛的数据库系统…

一问看懂 llana2

"Illana2" 可能是指 "Llama 2"&#xff0c;这是 Meta&#xff08;Facebook 的母公司&#xff09;推出的一个开源大型语言模型。Llama 2 是 LLaMA&#xff08;Large Language Model Meta AI&#xff09;的第二代版本&#xff0c;旨在用于各种自然语言处理任…

LeetCode|230. Kth Smallest Element in a BST

. 题目 Given the root of a binary search tree, and an integer k, return the kth smallest value (1-indexed) of all the values of the nodes in the tree. Example 1: Input: root [3,1,4,null,2], k 1Output: 1 Example 2: Input: root [5,3,6,2,4,null,null,…