单元测试--Junit
Junit是Java的单元测试框架提供了一些注解方便我们进行单元测试
1. 常用注解
常用注解:
- @Test
- @BeforeAll,@AfterAll
- @BeforeEach,@AfterEach
使用这些注解需要先引入依赖:
<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.9.1</version><scope>test</scope>
</dependency>
1.1 @Test
@Test用于方法,表示该方法是一个测试方法

添加上@Test注解可以看到左边出现了绿色三角形,点击可运行对应方法,点击类名左边的则是运行类中的所有测试方法。
1.2 @BeforeAll @AfterAll
@BeforeAll注释的方法会在该类中的所有测试方法执行前执行;
@AfterAll注释的方法会在该类中所有测试方法执行后执行;
被这两个注解注释的方法只能声明为静态方法
public class JunitTest {@Testvoid test01() {System.out.println("test01");}@Testvoid test02() {System.out.println("test02");}@BeforeAllstatic void beforeAll() {System.out.println("BeforeAll");}@AfterAllstatic void afterAll() {System.out.println("AfterAll");}
}

1.3 @BeforeEach @AfterEach
@BeforeEach注释的方法会在该类中的每个测试方法执行前都执行一次;
@AfterEach注释的方法会在该类中每个测试方法执行后都执行一次;
public class JunitTest {@Testvoid test01() {System.out.println("test01");}@Testvoid test02() {System.out.println("test02");}@BeforeAllstatic void beforeAll() {System.out.println("BeforeAll");}@AfterAllstatic void afterAll() {System.out.println("AfterAll");}@BeforeEachvoid beforeEach() {System.out.println("BeforeEach");}@AfterEachvoid afterEach() {System.out.println("AfterEach");}
}

2. 指定测试用例执行顺序
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class JunitTest {@Order(2)@Testvoid test01() {System.out.println("test01");}@Order(1)@Testvoid test02() {System.out.println("test02");}
}

3. 参数化
我们不能直接给测试方法添加参数,需要通过注册的方式。
引入依赖:
<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-params</artifactId><version>5.9.1</version><scope>test</scope>
</dependency>
3.1 单参数
//单参数@ParameterizedTest@ValueSource(ints = {1, 2, 3, 4})void test03(int x) {System.out.println("test03, x = " + x);}

@ParameterizedTest 注解用于表示方法为一个参数测试方法,允许运行同一个测试方法多次,但使用不同的参数值来执行测试
@ValueSource用于为@ParameterizedTest 提供单一类型的参数值。
3.2 多参数
//多参数@ParameterizedTest@CsvSource({"'小明', '18'", "'小红', '19'", "'小华', '20'"})void test04(String name, int age) {System.out.println(name + "今年" + age + "岁");}

//多参数,文件传递@ParameterizedTest@CsvFileSource(resources = "test05.csv")void test05(String name, int age) {System.out.println(name + "今年" + age + "岁");}


3.3 通过方法生成参数
@ParameterizedTest@MethodSource("generate")void test06(String name, int age) {System.out.println(name + "今年" + age + "岁");}public static Stream<Arguments> generate() {return Stream.of(Arguments.arguments("A", 12),Arguments.arguments("B", 13),Arguments.arguments("C", 14),Arguments.arguments("D", 15));}
arguments()方法接受的是一个可变参数,可以接收任意数量的参数

4. 测试套件
实际开发中会有多个类需要我们测试,所以我们也需要管理多个测试类的运行。
引入依赖:
<dependency><groupId>org.junit.platform</groupId><artifactId>junit-platform-suite</artifactId><version>1.9.1</version><scope>test</scope></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-engine</artifactId><version>5.9.1</version><scope>test</scope></dependency>
import org.junit.platform.suite.api.SelectClasses;
import org.junit.platform.suite.api.Suite;@Suite
@SelectClasses({JunitTest.class, JunitTest2.class})
public class RunTest {
}
创建一个类使用入上注解
@SelectClasses表示通过class运行测试用例,这里先运行JunitTest再运行JunitTest2
也可以使用包运行:
@Suite
//@SelectClasses({example.JunitTest.class, example.JunitTest2.class})
@SelectPackages(value = {"example"})
public class RunTest {
}
注意RunTest类不能在这个包中
相关文章:
单元测试--Junit
Junit是Java的单元测试框架提供了一些注解方便我们进行单元测试 1. 常用注解 常用注解: TestBeforeAll,AfterAllBeforeEach,AfterEach 使用这些注解需要先引入依赖: <dependency><groupId>org.junit.jupiter<…...
达梦数据库系列—30. DTS迁移Mysql到DM
目录 1.MySQL 源端信息 2.DM 目的端信息 3.迁移评估 4.数据库迁移 4.1源端 MySQL 准备 4.2目的端达梦准备 初始化参数设置 兼容性参数设置 创建迁移用户和表空间 4.3迁移步骤 创建迁移 配置迁移对象及策略 开始迁移 对象补迁 5.数据校验 统计 MySQL 端对象及数…...
随记0000——从0、1 到 C语言
C语言的发展历程是计算机科学史上的一个重要里程碑。 下面是从最早的机器语言到汇编语言,再到高级语言如 C 语言的简化演进过程: 1. 机器语言 定义与特点 机器语言是最底层的编程语言,由一系列二进制代码组成。直接被CPU执行,…...
C++ | Leetcode C++题解之第264题丑数II
题目: 题解: class Solution { public:int nthUglyNumber(int n) {vector<int> dp(n 1);dp[1] 1;int p2 1, p3 1, p5 1;for (int i 2; i < n; i) {int num2 dp[p2] * 2, num3 dp[p3] * 3, num5 dp[p5] * 5;dp[i] min(min(num2, num3…...
前端系列-8 集中式状态管理工具pinia
集中式状态管理工具—pinia vue3中使用pinia作为集中式状态管理工具,替代vue2中的vuex。 pinia文档可参考: https://pinia.web3doc.top/introduction.html 1.项目集成pinia 安装pinia依赖: npm install pinia在main.ts中引入pinia import { createApp } from vu…...
pytest使用
主要技术内容 1.pytest设计 接口测试 框架设想 common—公共的东西封装 1.request请求 2.Session 3.断言 4.Log 5.全局变量 6.shell命令 ❖ config---配置文件及读取 ❖ Log— ❖ payload—请求参数—*.yaml及读取 ❖ testcases—conftest.py; testcase1.py…….可…...
单表查询总结与多表查询概述
1. 单表查询总结 执行顺序: 从一张表,过滤数据,进行分组,对分组后的数据再过滤,查询出来所需数据,排序之后输出; from > where > group by > having > select > order by 2. …...
redis的使用场景和持久化方式
redis的使用场景 热点数据的缓存。热点:频繁读取的数据。限时任务的操作:短信验证码。完成session共享的问题完成分布式锁。 redis的持久化方式 什么是持久化:把内存中的数据存储到磁盘的过程,同时也可以把磁盘中的数据加载到内存…...
嵌入式Linux学习: 设备树实验
设备树(DeviceTree)是一种硬件描述机制,用于在嵌入式系统和操作系统中描述硬件设备的特性、连接关系和配置信息。它提供了一种与平台无关的方式来描述硬件,使得内核与硬件之间的耦合度降低,提高了系统的可移植性和可维…...
eqmx上读取数据处理以后添加到数据库中
目录 定义一些静态变量 定时器事件的处理器 订阅数据的执行器 处理json格式数据和将处理好的数据添加到数据库中 要求和最终效果 总结一下 定义一些静态变量 // 在这里都定义成全局的 一般都定义成静态的private static MqttClient mqttClient; // mqtt客户端 private s…...
【中项】系统集成项目管理工程师-第5章 软件工程-5.3软件设计
前言:系统集成项目管理工程师专业,现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试,全称为“全国计算机与软件专业技术资格(水平)考试”&…...
C++学习笔记-内联函数使用和含义
引言 内联函数是C为了优化在函数的调用带来的性能开销而设计的,特别是当函数体很小且频繁调用时,内联函数可以让编译器在调用点直接展开函数体,从而避免了函数调用的开销。 一、内联函数的定义与含义 1.1 定义 内联函数是通过在函数声明或…...
数据库(MySQL)-视图、存储过程、触发器
一、视图 视图的定义、作用 视图是从一个或者几个基本表(或视图)导出的表。它与基本表不同,是一个虚表。但是视图只能用来查看表,不能做增删改查。 视图的作用:①简化查询 ②重写格式化数据 ③频繁访问数据库 ④过…...
js 优雅的实现模板方法设计模式
在JavaScript中,优雅地实现模板方法设计模式通常意味着我们要遵循一些最佳实践,如清晰地定义算法的骨架(模板方法),并确保子类能够灵活地扩展或修改这些算法中的特定步骤。由于JavaScript是一种动态语言,我…...
C语言——输入输出
C语言——输入输出 输入输出函数的类型getcharputcharprintf占位符的分类 scanf 什么是输入输出呢? 所谓输入输出是以计算机为主机而言的,往内存中输入数据为输入,反之从内存中输出数据为输出。 输入输出的功能 C语言本身是不提供输入输出功能…...
【微软蓝屏】微软Windows蓝屏问题汇总与应对解决策略
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
OpenCV图像滤波(2)均值平滑处理函数blur()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在OpenCV中,blur()函数用于对图像应用简单的均值模糊(mean blur)。这种模糊效果可以通过将图像中的每个像素替…...
Android lmkd机制详解
目录 一、lmkd介绍 二、lmkd实现原理 2.1 工作原理图 2.2 初始化 2.3 oom_adj获取 2.4 监听psi事件及处理 2.5 进程选取与查杀 2.5.1 进程选取 2.5.2 进程查杀 三、关键系统属性 四、核心数据结构 五、代码时序 一、lmkd介绍 Android lmkd采用epoll方式监听linux内…...
linux shell(中)
结构化命令 if语句 if-then 最基本的结构化命令是 if-then 语句。if-then 语句的格式如下: if command thencommands ifif command; then # 通过把分号(;)放在待求值的命令尾部,可以将 then 语句写在同一行commands ifbash sh…...
VMware三种网络模式---巨细
文章目录 目录 ‘一.网络模式概述 二.桥接模式 二.NAT模式 三.仅主机模式 四.案例演示 防火墙配置: 虚拟电脑配置 前言 本文主要介绍VMware的三种网络模式 ‘一.网络模式概述 VMware中分为三种网络模式: 桥接模式:默认与宿主机VMnet0绑…...
BEAGLE库终极指南:如何快速实现高性能系统发育分析
BEAGLE库终极指南:如何快速实现高性能系统发育分析 【免费下载链接】beagle-lib general purpose library for evaluating the likelihood of sequence evolution on trees 项目地址: https://gitcode.com/gh_mirrors/be/beagle-lib 你是否在系统发育分析中遇…...
Photoshop图层批量导出神器:快速高效导出PSD图层为独立文件的最佳解决方案
Photoshop图层批量导出神器:快速高效导出PSD图层为独立文件的最佳解决方案 【免费下载链接】Photoshop-Export-Layers-to-Files-Fast This script allows you to export your layers as individual files at a speed much faster than the built-in script from Ado…...
从排版混乱到学术规范:NKThesis LaTeX模板的中文标题架构演进之路
从排版混乱到学术规范:NKThesis LaTeX模板的中文标题架构演进之路 【免费下载链接】NKThesis 南开大学硕士毕业论文/博士论文模板 (Latex Template for Nankai University) 项目地址: https://gitcode.com/gh_mirrors/nk/NKThesis 在学术写作的数字化浪潮中&…...
告别混乱!用EPLAN高效管理端子连接图的5个实战技巧与常见坑点复盘
告别混乱!用EPLAN高效管理端子连接图的5个实战技巧与常见坑点复盘 在电气工程设计领域,端子连接图的质量直接影响着生产效率和调试准确性。许多工程师在项目后期常常陷入反复修改端子图表的泥潭,不仅耗费宝贵时间,还可能因疏忽导致…...
AI智能体项目管理器:从原理到实战的编排框架解析
1. 项目概述:一个为AI智能体设计的项目管理器最近在GitHub上看到一个挺有意思的项目,叫gannonh/agent-pm。光看名字,agent-pm, 很容易让人联想到“代理项目管理”或者“智能体项目经理”。点进去一看,果然,…...
第一:基于人工智能的自动化测试工具【testRigor】
1.testRigor是基于人工智能口驱动的无代码自动化测试平台,它能够自动生成测试用例,无需人工编写测试脚本2.它能通过分析应用的行为模式,智能地设计出覆盖面广、针对性强的测试场景3.官方网址:https://testrigor.com/一.支持平台 1…...
JAVA低空经济无人机飞手接单平台系统源码开发与部署方案
随着低空经济产业的快速发展,无人机应用场景不断拓展,航拍、测绘、巡检、物流等领域对专业飞手的需求日益增长,飞手接单难、需求方找飞手繁琐的行业痛点愈发突出。一、系统开发核心原则(务实合规,贴合场景)…...
赣州威视智投GEO优化服务
在数字化浪潮席卷的当下,赣州本地商家面临着线上曝光不足、流量少、排名靠后的经营难题。如何在激烈的市场竞争中脱颖而出,实现精准获客与稳定引流,成为众多商家亟待解决的问题。赣州威视智投科技有限公司(以下简称“威视智投”&a…...
第一次喝精酿怎么品
精酿酒吧新手指南:四步解锁品酒技巧,轻松告别困惑第一次走进精酿酒吧,新手常因陌生酒名和风味描述困惑。其实品精酿很简单,掌握几个步骤即可入门——这种认真品酒的态度,早在中世纪就有,欧洲修士们酿造后会…...
OpenClaw-China:中文场景下开源大语言模型高效微调与部署实战指南
1. 项目概述与核心价值 最近在GitHub上看到一个挺有意思的项目,叫“BytePioneer-AI/openclaw-china”。光看这个名字,你可能会有点摸不着头脑——“BytePioneer”是字节先锋,“openclaw”是开放之爪,再加上“china”的后缀&#x…...
