当前位置: 首页 > news >正文

Java测试——junit的使用(2)

排序

我们同一个类下的多个用例的执行顺序是不确定的,如果需要指定固定的顺序,则需要在类上加这个注解

@TestMethodOrder(MethodOrderer.OrderAnnotation.class)

然后在想要第一个执行的用例上加上

@Order(1)

第二个执行的用例上注解:

@Order(2)

以此类推

例如:没有order注解时:

import org.junit.jupiter.api.Test;public class aaa {@Testvoid two(){System.out.println("aaa two");}@Testvoid one(){System.out.println("aaa one");}@Testvoid three(){System.out.println("aaa three");}
}

执行顺序是one two three
在这里插入图片描述
有了order注解:

import org.junit.jupiter.api.MethodOrderer;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestMethodOrder;@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class aaa {@Test@Order(1)void two(){System.out.println("aaa two");}@Test@Order(2)void one(){System.out.println("aaa one");}@Test@Order(3)void three(){System.out.println("aaa three");}
}

就会按照我们想要的顺序执行了
在这里插入图片描述
并且需要注意的是:我们的@Test注解还是需要加上的,否则会无法正确执行

参数化

我们可以自定义要进行测试的参数

单数据源

使用下面两个注解来进行单一参数设置

@ParameterizedTest
@ValueSource(数据类型类={参数1,参数2...})

其中数据类型类可以参照下面这个表

数组数据类型类
short[]shorts
byte[]bytes
int[]ints
long[]longs
double[]doubles
char[]chars
boolean[]booleans
String[]strings
Class<?>classes

例如:输出所有的string类型的参数

@ParameterizedTest
@ValueSource(strings = {"curry", "lebron", "durant"})
void ontParamTest(String name){System.out.println(name);
}

在这里插入图片描述

多数据源(直接传输数据)

使用下面两个注解来进行多参数设置

@ParameterizedTest
@CsvSource({"参数1数据1, 参数1数据2", "参数2数据1, 参数2数据2"...})

例如,输出string类型和int类型的参数

@ParameterizedTest
@CsvSource({"curry,30","lebron,23","durant,35"})
void multiParamsTest(String name, int id){System.out.println(name + "穿" + id + "号码");
}

在这里插入图片描述

多数据源(通过文件传输)

当我们的数据过多时,直接写在代码上显得十分冗余,因此我们可以写在表哥中,让代码从文件中读取数据

这里的文件是.csv文件

通过下面两个注解来使用:

@ParameterizedTest
@CsvFileSource(files = "文件路径")

例如:
先创建一个.csv文件
在这里插入图片描述
然后编写代码:

@ParameterizedTest
@CsvFileSource(files = "/Users/lixiao/Desktop/NameAndId.csv")
void csvFileParamsTest(String name, int id){System.out.println(name + "穿" + id + "号码");
}

在这里插入图片描述

动态方法生成数据源

我们可以动态的生成数据源
使用下面两个注解

@ParameterizedTest
@MethodSource("提供数据源方法名")

如果返回的数据类型统一,那么提供数据的方法最终直接返回具体的类型,并且需要是静态的
例如:

@ParameterizedTest
@MethodSource("ParamsSupport")
void DynamicParamsTest(String name){System.out.println(name);
}static String[] ParamsSupport() throws InterruptedException {String[] arr = new String[5];for (int i = 0; i < arr.length; i++) {arr[i] = System.currentTimeMillis() + "";Thread.sleep(3);}return arr;
}

在这里插入图片描述

如果返回的数据类型不统一,提供数据的方法最终返回的是数据流,并且需要是静态的

static Stream<Arguments> 方法名

代码案例:

@ParameterizedTest
@MethodSource("ParamsSupport")
void DynamicParamsTest(String name, int id){System.out.println(name + "穿" + id + "号码");
}static Stream<Arguments> ParamsSupport() throws InterruptedException {String[] arr = new String[5];for (int i = 0; i < arr.length; i++) {arr[i] = System.currentTimeMillis() + "";Thread.sleep(3);}return Stream.of(Arguments.arguments(arr[0], 20),Arguments.arguments(arr[1], 20),Arguments.arguments(arr[2], 20),Arguments.arguments(arr[3], 20),Arguments.arguments(arr[4], 20));
}

在这里插入图片描述

@MethodSource中也可以不写方法名,提供数据的方法和使用数据的方法同名即可

并且,使用了参数化@ParameterizedTest注解的方法,不能再用@Test注解

测试套件

想要同时测试多个类,就需要使用测试套件,这些要执行的测试类必须有@Test注解
先创建一个类,使用下面这个注解标明该类是测试套件类

@Suite

指定类名

使用下面这个注解来指定要执行的类名

@SelectClasses({1.class,2.class ...})

例如:

@Suite
@SelectClasses({aaa.class, bbb.class})
public class runSuite {}

在这里插入图片描述

指定包名

使用下面这个注解来指定要执行的类所在的包名

@SelectPackages("包名")

例如:

@Suite
@SelectPackages("autoTest0212")
public class runSuite {}

我们包的结构如下:
在这里插入图片描述
但是调用该方法后,只运行了junitTest和cccTests
在这里插入图片描述
这是因为,使用指定包名来运行所有测试类,必须要该类命名以“Test”或者“Tests”为结尾,并且T必须为大写

相关文章:

Java测试——junit的使用(2)

排序 我们同一个类下的多个用例的执行顺序是不确定的&#xff0c;如果需要指定固定的顺序&#xff0c;则需要在类上加这个注解 TestMethodOrder(MethodOrderer.OrderAnnotation.class)然后在想要第一个执行的用例上加上 Order(1)第二个执行的用例上注解&#xff1a; Order(…...

数据库(六): MySQL的主从复制和读写分离

文章目录一、为什么要使用主从复制和读写分离二、主从复制的原理三、如何实现主从复制3.1 master配置3.2 slave配置3.3 测试主从复制四、读写分离五、缺点一、为什么要使用主从复制和读写分离 注意到主从复制和读写分离一般是一起使用的。目的很简单&#xff0c;就是提高数据库…...

编程思想-0x00架构

产生架构的原因&#xff1f; 1、代码均摊 将不同的代码进行分块&#xff0c;然后简历联系&#xff0c;低耦合、高内聚&#xff1b; 原则上&#xff1a;合理的App架构应该是合理分配每个类、结构体、方法、变量的存在都应该遵循单一职责的原则 2、便于测试 测试确保代码质量&…...

QCon演讲实录(上):多云环境下应用管理与交付实践

作者&#xff1a;阿里云大数据基础工程技术团队——郭耀星 大家上午好&#xff01;我是来自阿里云大数据基础工程技术团队的郭耀星&#xff0c;花名雪尧。今天我很高兴能够来到QCon&#xff0c;与大家分享我的经验和心得。在当前的多云环境中&#xff0c;作为运维支撑团队&…...

async thunk 解决 API 调用的依赖问题

async thunk 解决 API 调用的依赖问题 一句话节省看下面一堆内容的时间就是&#xff1a; async thunk 中可以使用 async/await 锁住其他的 action 操作 一般 API 之间存在三种情况&#xff1a; A 和 B 之间没有依赖关系 这样的情况下&#xff0c;A 和 B 可以各调用各的&#x…...

java 黑马头条 day3 实名认证分布式事务问题 seata

1 完善实名认证功能 1.1 实名认证分布式事务问题 1.1.1 问题分析 在昨天的实名认证代码中&#xff0c;审核完毕后添加 id5的演示异常&#xff0c;重新使用postman进行测试, 会发现 出现异常后 本地方法因为有 Transactional注解 对ap_user ap_user_realname的操作会回滚 而…...

测试开发之Django实战示例 第七章 创建电商网站

第七章 创建电商网站在上一章里&#xff0c;创建了用户关注系统和行为流应用&#xff0c;还学习了使用Django的信号功能与使用Redis数据库存储图片浏览次数和排名。这一章将学习如何创建一个基础的电商网站。本章将学习创建商品品类目录&#xff0c;通过session实现购物车功能。…...

【C++之容器篇】造轮子:list的模拟实现与使用

目录前言一、关于list1. 简介2. 成员类型二、默认成员函数1. 构造函数1. list()2. list(size_t n,const T& val T())和list(InputIterator first,InputIterator last)2. 拷贝构造函数3. 析构函数4. 赋值运算符重载函数三、迭代器1. 普通对象的正向迭代器2. const对象的正向…...

自动驾驶:决策规划算法岗位面经分享

本专栏分享 计算机小伙伴秋招春招找工作的面试经验和面试的详情知识点 专栏首页: 主要分享计算机算法类在面试互联网公司时候一些真实的经验 人情况是985本硕,硕士研究方向是强化学习在移动机器人路径规划中的应用,一段自动驾驶中小厂实习经历,秋招找的大都是机器人和自动驾…...

2.7、进程调度的时机、切换与过程、方式

1、进程调度的时机 进程调度\color{red}进程调度进程调度&#xff08;低级调度&#xff09;&#xff0c;就是按照某种算法从就绪队列中选择一个进程为其分配处理机 进程在操作系统内核程序临界区\color{red}操作系统内核程序临界区操作系统内核程序临界区中不能\color{red}不能…...

工程管理系统源码+项目说明+功能描述+前后端分离 + 二次开发

工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#xff1a;实现对数据字典标签的增删改查操作 2、编码管理&#xff1a;实现对系统编码的增删改查操作 3、用户管理&#xff1a;管理和查看用户角色 4、菜单管理&#xff1a;实现对系统菜单的增删改查操…...

ESP32S3系列--SPI从机驱动详解(一)

一、目的 在之前的博文中《ESP32S3系列--SPI主机驱动详解(一)》、《ESP32S3系列--SPI主机驱动详解(二)》我们详细讲解了ESP32S3上的SPI外设如何工作在主机模式并通过代码的形式帮助大家理解。 本篇我们将介绍SPI外设工作在从机模式下的使用知识点。 二、介绍 参考资料 http…...

【实战篇】移动端H5网页在ios滑动不流畅和禁止缩放问题

问题描述:移动端H5网页在ios滑动不流畅和禁止缩放问题 最近开发小程序,有一个富文本展示页面使用的是<webview>H5网页嵌入的,当你用 overflow-y:scroll 属性的时候,内容超出容器溢出滚动的效果很迟顿,特别是在IOS系统中,而且页面还会缩放。 解决方案: 1…...

12 循环神经网络(基础篇) Basic RNN

文章目录问题引入关于权重权重共享RNN CellRNN原理RNN计算过程代码实现RNN Cell维度说明代码RNN维度说明NumLayers说明计算过程代码参考实例问题分析多分类问题代码RNN CellRNN改进Embedding网络结构Embedding说明Linear说明代码课程来源&#xff1a; 链接课程文本参考&#xf…...

【C语言必经之路——第11节】初阶指针(2)

五、指针的运算1、指针与整数相加减看一下下面的代码&#xff1a;#include<stdio.h> int my_strlen(char* str) {int count0;while(*str!\0){count;str;//指针加减整数}return count; } int main() {int lenmy_strlen("abcdef");printf("%d\n",len);…...

SpringBoot学习(1)第一个SpringBoot程序

之前的SpringMVc就不在记录了&#xff0c;好像时间不太够了&#xff0c;但是springmvc作为javaweb的升级学一学对于springboot还是有较大的帮助的。 首先我们需要引入依赖&#xff0c;但是请注意&#xff0c;其中的一个不算是依赖&#xff0c;写法有所不同 首先需要引入 <…...

什么是热迁移?90%的企业都理解错误

科技的发展&#xff0c;新冠的冲击&#xff0c;让市场竞争愈发激烈。尽管云计算服务为企业免除了基础硬件的建设和维护成本&#xff0c;当企业需要进行业务跨架调整、升级维护、环境测试等场景而进行云迁移&#xff0c;其过程中所带来的停机时间&#xff0c;就变得尤为头疼了。…...

Scratch少儿编程案例-丝滑版贪吃蛇

专栏分享 点击跳转=>Unity3D特效百例点击跳转=>案例项目实战源码点击跳转=>游戏脚本-辅助自动化点击跳转=>Android控件全解手册点击跳转=>Scratch编程案例👉关于作者...

Linux系统之网卡子接口配置方法

Linux系统之网卡子接口配置方法一、本地系统环境检查1.检查系统版本2.检查系统内核版本3.检查本地IP地址二、网卡子接口介绍1.网卡子接口简介2.网卡子接口的优点3.网卡子接口的缺点三 加载802.1q 模块1.查看系统802.1q 模块信息2.加载802.1q 模块3.检查802.1q 模块加载状态四、…...

2023上半年软考中级系统集成项目管理工程师2月25日开班

系统集成项目管理工程师是全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff08;简称软考&#xff09;项目之一&#xff0c;是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试&#xff0c;既属于国家职业资格考试&#xff0c;又是职…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全&#xff0c;让Comfyui导出的图像不包含工作流信息&#xff0c;导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo&#xff08;推荐&#xff09;​​ 在 save_images 方法中&#xff0c;​​删除或注释掉所有与 metadata …...

协议转换利器,profinet转ethercat网关的两大派系,各有千秋

随着工业以太网的发展&#xff0c;其高效、便捷、协议开放、易于冗余等诸多优点&#xff0c;被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口&#xff0c;具有实时性、开放性&#xff0c;使用TCP/IP和IT标准&#xff0c;符合基于工业以太网的…...

华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)

题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...