2.27 junit5常用语法

news2024/11/17 21:34:16

一.了解junit

junit是一个开源的java单元测试框架,java方向使用最广泛的单元测试框架.

所需要的依赖

<dependencies>
        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>4.0.0-alpha-7</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>5.8.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-suite</artifactId>
            <version>1.8.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-reporting</artifactId>
            <version>1.8.2</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

二,注解

1.@Test表示

这是一个方法/一个用例

但是他的顺序是不固定的.我们需要指定顺序

2.@BeforeEach/@BeforeAll

@BeforeEach表示被注解的方法执行前都要执行一遍

注意只要@BeforeEach就行

否则就会先执行aaa然后因为需要先执行一遍aaa然后再执行一遍aaa再往下执行bbb

@BeforeAll:所有方法之前执行一次

注意:被BeforeAll需要用static方法

3.@AfterEach/@AfterAll

@AfterEach 其他方法执行后都要执行一遍

注意只有被ALL修饰的才要static 其他的都不能用static

@AfterALL同理

三.断言

写自动化测试要么是正确的要么是错误的,不能因为错误就停止所有程序,所以需要断言

junit提供了一组Assertions类来编写

1. Assertions.assertEquals(expect,actual)

校验期望值和实际值是否匹配

2.Assertions.assertNotEquals(Expect,actual)

检验是否不匹配

3.Assertions.assertTrue()/Assertions.assertFalse()

参数是表达式,结果是boolean类型

4.assertNull()/assertNotNull()

检验是否为空

四.用例执行顺序

juit的默认执行顺序是不确定的.官方文档没有明确指出

我们仍然可以使用junit里提供的方法来手动设置用例的方法

通过方法排序---通过-@order注解来排序

第一步.在类外标注当前类使用方法来进行排序

第二步在每个注解下标注顺序

如果被static修饰,就直接无视,没有排序了

无视原有的After Before

面试问题:为什么需要用到junit里的排序方法

junit里的方法有方法顺序排序,标签排序

首先会把方法的类定义在类外声明当前类类用方法进行排序

然后类里明确标注具体的执行顺序

如果用例之间存在关联关系,那么就需要手动指定用例的执行顺序

但是我们再编写测试用例的时候进行保持用例的独立性

五.测试套件suite

1.指定对应的的类 添加到套件执行

先创建一个专门的类来进行运行.把同一个包里要运行的类放在一起

注意:

包下必须有命名包含Test\tests的文件 并且有对应的执行注解,否则则会提示找不到对应的用例

2)指定包.添加到套件中执行

注定必须在同一个包下进行测试

六. 参数化

@Parameterizedtest 标注方法类型为参数化

不需要再添加@Test注解,如果添加了,则用例则会多执行一遍

1.单参数

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

其中的类型 对应原生类型,int->ints float->floats

2.多参数

@CsvSource

注意就算多个方法指定来源,都要同时用参数注解(@ParameterizedTest)注明

手动指定分隔符

用delimiterString

如果参数中含逗号,要么指定分隔符,要么就用单引号' ' 作为转义字符

3.指定文件路径.csv

如果参数非常多,在代码中编写不太好看.可以借助文件注入的方式来添加

@CsvSource(指定文件路径)

相对路径下 一定要在前加上 /

绝对路径不用加

4.动态参数

4.1单参数

@MathodSource("")参数为数据来源的方法名,如果不指定数据来源.则默认找用例同名的静态方法

提供数据的方法,返回值是Stream流

4.2多参数

返回多参树用Argurment类

七.执行屏幕截图

加路径的时候要加上要保存的名字

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

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

相关文章

敏捷测试需要遵循的原则

摘要&#xff1a;与传统的阶段性测试不同的是&#xff0c;敏捷测试能够将测试集成到整个软件开发过程中&#xff0c;尽早、及时地发现缺陷&#xff0c;帮助交付有价值的高质量产品。 传统测试与敏捷测试的比较大的区别在于&#xff1a; 在瀑布方法中&#xff0c;测试只能在开发…

400G光模块知识大全

400G光模块是目前高速传输领域中的一种先进产品&#xff0c;被广泛应用于高性能数据中心、通信网络、大规模计算、云计算等领域。本文将从400G光模块的定义、技术、产品型号、应用场景以及未来发展方向进行详细介绍。一、什么是400G光模块&#xff1f;400G光模块是指传输速率达…

PCI子系统

很多网络接口卡都是外围组件互联&#xff08;Peripheral Compaonent Interconnect&#xff09;设备&#xff0c;必须与Linux PCI子系统协同工作&#xff0c;并非所有的网络接口都是PCI设备&#xff0c;很多嵌入式设备的网络接口连接的就不是PCI总线&#xff0c;这些设备的初始化…

学习 Python 之 Pygame 开发魂斗罗(六)

学习 Python 之 Pygame 开发魂斗罗&#xff08;六&#xff09;继续编写魂斗罗1. 创建碰撞类2. 给地图添加碰撞体3. 让人物可以掉下去4. 实现人物向下跳跃5. 完整的代码继续编写魂斗罗 在上次的博客学习 Python 之 Pygame 开发魂斗罗&#xff08;五&#xff09;中&#xff0c;我…

单例模式之饿汉、懒汉模式

目录 1.单例模式 1.1 饿汉模式 1.2 懒汉模式 1.单例模式 单例模式能保证类在程序中只存在唯一一份实例.这一点在很多场景中都需要,比如JDBC中的DataSource实例就只需要一个. 单例模式具体的是实现方法主要有两种:饿汉模式和懒汉模式. 1.1 饿汉模式 饿汉摸模式是指,在类加…

多模态推荐系统综述

推荐系统(RS)已经成为在线服务不可或缺的工具。它们集成了各种深度学习技术&#xff0c;可以根据标识符和属性信息对用户偏好进行建模。随着短视频、新闻等多媒体服务的出现&#xff0c;在推荐的同时了解这些内容变得至关重要。此外&#xff0c;多模态特征也有助于缓解RS中的数…

我的 System Verilog 学习记录(6)

引言 本文简单介绍 SystemVerilog 语言的 线程。 前文链接&#xff1a; 我的 System Verilog 学习记录&#xff08;1&#xff09; 我的 System Verilog 学习记录&#xff08;2&#xff09; 我的 System Verilog 学习记录&#xff08;3&#xff09; 我的 System Verilog 学…

Redis之数据类型详解分析

文章目录1 Redis1.1 概述1.2 查看内部编码1.3 String字符串1.3.1 简介1.3.2 应用常景1.3.3 String内部编码1.4 Hash散列1.4.1 简介1.4.2 应用常景1.4.3 Hash内部编码1.4.4 rehash和渐进式rehash操作1.4.4.1 过程1.4.4.2 rehash触发条件1.4.5 跟JDK的HashMap的区别1.5 List列表1…

kibana搭建(windowslinux)

1.说明 搭建kibana方便查询es库&#xff0c;本文分别对windows和linux版本进行安装&#xff0c;因为es集群版本是7.4.1&#xff0c;所以配套的kibana也是选择相同版本 2.下载 https://artifacts.elastic.co/downloads/kibana/kibana-7.4.1-windows-x86_64.zip https://artifact…

newbing的注册使用

newbing是一款全新的智能搜索引擎&#xff0c;它可以帮助你快速、准确地找到你想要的信息&#xff0c;还可以与你进行友好、有趣的对话。newbing不仅拥有强大的搜索功能&#xff0c;还具备创造性和逻辑性&#xff0c;可以为你生成诗歌、故事、代码、歌词等各种内容。newbing还可…

FastDDS-1.开始

开始 这一节定义了DDS和RTPS的概念&#xff0c;也提供了一个逐步讲解的教程&#xff0c;这个教程中讲解了如何开发一个简单的FastDDS发布订阅应用程序。 1.1 什么是DDS DDS是一个以数据为中心的通信一些&#xff0c;主要用在分布式软件的通信领域。它定义了应用程序的通信API…

一文搞懂Python时间序列

Python时间序列1. datetime模块1.1 datetime对象1.2 字符串和datatime的相互转换2. 时间序列基础3. 重采样及频率转换4. 时间序列可视化5. 窗口函数5.1 移动窗口函数5.2 指数加权函数5.3 二元移动窗口函数时间序列&#xff08;Time Series&#xff09;是一种重要的结构化数据形…

【一】kubernetes集群部署

一、docker环境搭建 1、移除以前docker相关包 sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine2、配置yam源 sudo yum install -y yum-utilssudo yum-config-manager --ad…

原始GAN-pytorch-生成MNIST数据集(代码)

文章目录原始GAN生成MNIST数据集1. Data loading and preparing2. Dataset and Model parameter3. Result save path4. Model define6. Training7. predict原始GAN生成MNIST数据集 原理很简单&#xff0c;可以参考原理部分原始GAN-pytorch-生成MNIST数据集&#xff08;原理&am…

LightningChart .NET 10.4.1 NEW Crack

实时监控&#xff0c;无闪烁或延迟 完整的数据准确性&#xff0c;无需减少数据点 屏幕上的更多数据 更好的图形质量 响应式用户界面。鼠标或触摸屏操作将立即更新图表&#xff0c;并为其他 UI 控件释放处理器时间以继续操作 Visual Studio Marketplace 中最受欢迎的 .NET 图表控…

全新后门文件Nev-3.exe分析

一、 样本发现&#xff1a; 蜜罐 二、 内容简介&#xff1a; 通过公司的蜜罐告警发现一个Nev-3.exe可执行文件文件&#xff0c;对该样本文件进行分析发现&#xff0c;该可执行程序执行后会从远程服务器http://194.146.84.2:4395/下载一个名为“3”的压缩包&#xff0c;解压后…

数据结构与算法——3.时间复杂度分析1(概述)

前面我们已经介绍了&#xff0c;研究算法的最终目的是如何花费更少的时间&#xff0c;如何占用更少的内存去完成相同的需求&#xff0c;并且也通过案例演示了不同算法之间时间耗费和空间耗费上的差异&#xff0c;但我们并不能将时间占用和空间占用量化。因此&#xff0c;接下来…

【经验总结】10年的嵌入式开发老手,到底是如何快速学习和使用RT-Thread的?

【经验总结】一位近10年的嵌入式开发老手&#xff0c;到底是如何快速学习和使用RT-Thread的&#xff1f; RT-Thread绝对可以称得上国内优秀且排名靠前的操作系统&#xff0c;在嵌入式IoT领域一直享有盛名。近些年&#xff0c;物联网产业的大热&#xff0c;更是直接将RT-Thread这…

Redis | 安装Redis和启动Redis服务

目录 一、Redis简介 1.1 简介 二、Redis安装 2.1 Windows安装Redis 2.2 Linux安装Redis 三、Redis服务启动和停止 3.1 Windows启动Redis服务 3.2 Linux启动Redis服务 四、Redis设置密码远程连接 4.1 为Redis登陆设置密码 4.2 设置Redis允许远程连接 五、Redis常…

STM32CubeMX按键模块化 点灯

本文代码使用 HAL 库。 文章目录前言一、按键原理图二、CubeMX 创建工程三、代码讲解&#xff1a;1. GPIO的输入HAL库函数&#xff1a;2. 消抖&#xff1a;3. 详细代码四&#xff0c;实验现象&#xff1a;总结前言 我们继续讲解 stm32 f103&#xff0c;这篇文章将详细 为大家讲…