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)
排序 我们同一个类下的多个用例的执行顺序是不确定的,如果需要指定固定的顺序,则需要在类上加这个注解 TestMethodOrder(MethodOrderer.OrderAnnotation.class)然后在想要第一个执行的用例上加上 Order(1)第二个执行的用例上注解: Order(…...
数据库(六): MySQL的主从复制和读写分离
文章目录一、为什么要使用主从复制和读写分离二、主从复制的原理三、如何实现主从复制3.1 master配置3.2 slave配置3.3 测试主从复制四、读写分离五、缺点一、为什么要使用主从复制和读写分离 注意到主从复制和读写分离一般是一起使用的。目的很简单,就是提高数据库…...
编程思想-0x00架构
产生架构的原因? 1、代码均摊 将不同的代码进行分块,然后简历联系,低耦合、高内聚; 原则上:合理的App架构应该是合理分配每个类、结构体、方法、变量的存在都应该遵循单一职责的原则 2、便于测试 测试确保代码质量&…...
QCon演讲实录(上):多云环境下应用管理与交付实践
作者:阿里云大数据基础工程技术团队——郭耀星 大家上午好!我是来自阿里云大数据基础工程技术团队的郭耀星,花名雪尧。今天我很高兴能够来到QCon,与大家分享我的经验和心得。在当前的多云环境中,作为运维支撑团队&…...
async thunk 解决 API 调用的依赖问题
async thunk 解决 API 调用的依赖问题 一句话节省看下面一堆内容的时间就是: async thunk 中可以使用 async/await 锁住其他的 action 操作 一般 API 之间存在三种情况: A 和 B 之间没有依赖关系 这样的情况下,A 和 B 可以各调用各的&#x…...
java 黑马头条 day3 实名认证分布式事务问题 seata
1 完善实名认证功能 1.1 实名认证分布式事务问题 1.1.1 问题分析 在昨天的实名认证代码中,审核完毕后添加 id5的演示异常,重新使用postman进行测试, 会发现 出现异常后 本地方法因为有 Transactional注解 对ap_user ap_user_realname的操作会回滚 而…...
测试开发之Django实战示例 第七章 创建电商网站
第七章 创建电商网站在上一章里,创建了用户关注系统和行为流应用,还学习了使用Django的信号功能与使用Redis数据库存储图片浏览次数和排名。这一章将学习如何创建一个基础的电商网站。本章将学习创建商品品类目录,通过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}进程调度进程调度(低级调度),就是按照某种算法从就绪队列中选择一个进程为其分配处理机 进程在操作系统内核程序临界区\color{red}操作系统内核程序临界区操作系统内核程序临界区中不能\color{red}不能…...
工程管理系统源码+项目说明+功能描述+前后端分离 + 二次开发
工程项目各模块及其功能点清单 一、系统管理 1、数据字典:实现对数据字典标签的增删改查操作 2、编码管理:实现对系统编码的增删改查操作 3、用户管理:管理和查看用户角色 4、菜单管理:实现对系统菜单的增删改查操…...
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说明代码课程来源: 链接课程文本参考…...
【C语言必经之路——第11节】初阶指针(2)
五、指针的运算1、指针与整数相加减看一下下面的代码:#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就不在记录了,好像时间不太够了,但是springmvc作为javaweb的升级学一学对于springboot还是有较大的帮助的。 首先我们需要引入依赖,但是请注意,其中的一个不算是依赖,写法有所不同 首先需要引入 <…...
什么是热迁移?90%的企业都理解错误
科技的发展,新冠的冲击,让市场竞争愈发激烈。尽管云计算服务为企业免除了基础硬件的建设和维护成本,当企业需要进行业务跨架调整、升级维护、环境测试等场景而进行云迁移,其过程中所带来的停机时间,就变得尤为头疼了。…...
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日开班
系统集成项目管理工程师是全国计算机技术与软件专业技术资格(水平)考试(简称软考)项目之一,是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试,既属于国家职业资格考试,又是职…...
YOLO-V5轻松上手
之前介绍了YOLO-V1~V4版本各做了哪些事以及相较于之前版本的改进。有的人或许会想“直接学习最近版本的算法不好吗”,在我看来,每一个年代的版本/算法都凝聚着当年学术界的智慧,即便是它被淘汰了也依旧有值得思考的地方,或是可以使…...
CSS的优先级理解
权重 的 4个等级定义我们把特殊性分为4个等级,每一个等级代表一类选择器,每个等级的值相加得出选择器的权重。4个等级的定义如下:第一等级:代表内联样式,如style"",权值为 1000第二等级ÿ…...
前端工程师leetcode算法面试必备-二分搜索算法(中)
一、前言 二分搜索算法本身并不是特别复杂,核心点主要集中在: 有序数组:指的是一个递增或者递减的区间(特殊情况如:【852. 山脉数组的峰顶索引】); 中间数:用来确定搜索目标落在左…...
【数据库】MySQL 单表查询,多表查询
目录 单表查询 一,创建表worker 1,创建表worker的sql代码如下: 2,向worker表中插入信息 二, 按要求进行单表查询 1、显示所有职工的基本信息。 2、查询所有职工所属部门的部门号,不显示重复的部门号。 …...
【c++】vector实现(源码剖析+手画图解)
vector是我接触的第一个容器,好好对待,好好珍惜! 目录 文章目录 前言 二、vector如何实现 二、vector的迭代器(原生指针) 三、vector的数据结构 图解: 四、vector的构造及内存管理 1.push_back() …...
VScode查看python f.write()的文件乱码
VScode查看python f.write()的文件乱码 在使用 VScode 编写 python 代码, print(),汉字正常显示, 使用 with open()as f: f.write()文件后, 在 …...
excel应用技巧:如何用函数制作简易抽奖动图
利用INDEX函数和随机整数函数RANDBETWEEN配合,在Excel中做一个简单的抽奖器,可以随机抽取姓名或者奖品。有兴趣的伙伴可以做出来试试,撞撞2023年好运气。每次年会大家最期待的就是抽奖环节。为了看看自己今年运气怎么样,会不会获奖…...
CSI Tool 安装及配置记录
一、Ubuntu安装 1.下载Ubuntu 首先安装Ubuntu 14.04 LTS 64位下载地址(页面中第一个链接) 2.制作启动盘(注意备份) 可以使用官方的工具Rufus,下载地址:https://rufus.ie/ 打开Rufus,先备份…...
华为OD机试 - 最低位排序(Python)| 真题+思路+代码
最低位排序 题目 给定一个非空数组(列表),起元素数据类型为整型, 请按照数组元素十进制最低位从小到大进行排序, 十进制最低位相同的元素,相对位置保持不变, 当数组元素为负值时,十进制最低为等同于去除符号位后对应十进制值最低位。 输入 给定一个非空数组(列表) 其…...
C#开发的OpenRA使用TrimExcess方法
C#开发的OpenRA使用TrimExcess方法 当你在细看OpenRA的代码,就会发现在下面这段代码添加了一个方法: foreach (var nodes in levels) nodes.TrimExcess(); 在上面代码里遍历整个节点列表,把所有节点都调用TrimExcess方法处理一下, 这样做的意义何在?为什么我们在一般的代码…...
扶风做网站/无锡整站百度快照优化
故障原因 本来做一个服务器分页的功能,结果按照文档配置好了一直都请求不到数据,而且用ajax完全没问题,那就查呗,network一查,初看没啥问题 method:post, 发送的数据 后来和ajax反复比较发现了 Request Payload这…...
网站底备案号链接代码/西安网站建设方案优化
操作系统原理作为计算机专业必学的一门基础专业课程,想必每个程序员都应该了解一下,今天我们就来说说几个基础的和操作系统相关的词汇。 内核 在学习操作系统原理的时候,很多书籍都会分处理器管理、存储器管理、文件管理及设备管理等等&#…...
营销型网站设计建设公司/福州网站建设策划
Android设计模式系列(10)--SDK源码之原型模式 Android设计模式系列(9)--SDK源码之适配器模式 Android设计模式系列(8)--SDK源码之工厂方法模式 Android设计模式系列(7)--SDK源码之命令模式 Android设计模式系列(6)--SDK源码之享元模式 Android设计模式系列(5)--SDK源码之备忘录…...
东莞最新疫情最新消息/短视频seo搜索优化
今天给大侠带来如何写好状态机,状态机是逻辑设计的重要内容,状态机的设计水平直接反应工程师的逻辑功底,所以很多公司在硬件工程师及逻辑工程师面试中,状态机设计几乎是必选题目。本篇在引入状态机设计思想的基础上,重…...
b2c商城网站开发价格/目前最流行的拓客方法
一致性Hash算法普通余数Hash算法与一致性Hash算法的区别,一致性Hash算法解决了什么问题?普通余数Hash算法我们前面研究Memcache(mc)与Redis的区别时,分析到mc是通过客户端来实现服务集群高可用的,客户端会有…...
关于动物自己做的网站/seo优化方案模板
1、字符型输入框: (1)字符型输入框:英文全角、英文半角、数字、空或者空格、特殊字符,特别要注意单引号和&符号。不要直接输入特殊字符时,使用“粘贴、拷贝”功能尝试输入。 (2࿰…...