IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 是时候升级你的Junit了,Junit5超详细实战 -> 正文阅读

[开发测试]是时候升级你的Junit了,Junit5超详细实战

每天进步一点点,关注我们哦,每天分享测试技术文章
本文章出自【码同学软件测试
码同学公众号:自动化软件测试
码同学抖音号:小码哥聊软件测试

介绍

单元测试是软件开发流程中的重要环节,在软件工程理论里,越早发现bug,修复的成本越低。单元测试就属于测试人员/开发人员提前介入测试的一种手段,在代码还没正式提测前,提前对函数、类进行测试。但是很多时候往往因为项目周期比较紧张,从而忽略了单元测试,这样很多bug可能要到提测后,甚至就一直隐藏在代码中无法被发现。这就相当于在代码中埋藏了定时炸弹。因此单元测试是十分有必要的,它是保障代码执行的重要手段。

在Java领域里,最知名的单元测试框架就是Junit了。 JUnit 有着较长的发展历史和不断演进的丰富功能,备受大多数 Java 开发者的青睐。

最新的Junit版本是Junit5,这个版本可以说是 JUnit 单元测试框架的一次重大升级,首先需要 Java 8 以上的运行环境,虽然在旧版本 JDK 也能编译运行,但要完全使用 JUnit 5 功能, JDK 8 环境是必不可少的。

Junit5的主要特性有:

  1. 提供全新的断言和测试注解,支持测试类内嵌

  2. 更丰富的测试方式:支持动态测试,重复测试,参数化测试等

  3. 实现了模块化,让测试执行和测试发现等不同模块解耦,减少依赖

  4. 提供对 Java 8 的支持,如 Lambda 表达式,Sream API等

接下来,我们来学习下Junit的一些基本使用。

在工程中引入Junit依赖

org.junit.jupiter

junit-jupiter-engine

5.5.2

test

先写一个简单的测试类

@DisplayName(“第1个测试类”)

public class DemoTest {

@BeforeAll
public static void init() {
    System.out.println("初始化数据");
}

@AfterAll
public static void end() {
System.out.println(“清理数据”);
}

@BeforeEach
public void setup() {
    System.out.println("当前测试方法开始");
}



@AfterEach
public void tearDown() {
    System.out.println("当前测试方法结束");
}



@DisplayName("第1个测试")
@Test
void test1() {
    System.out.println("第1个测试开始测试");
}

@DisplayName(“第2个测试”)
@Test
void test2() {
System.out.println(“第2个测试开始测试”);
}

}

几个常用的注解解释:

@DisplayName:测试类在测试报告中的名称,可以加在类上,也可以加在方法上

@BeforeAll和@AfterAll:它们定义了整个测试类在开始前以及结束时的操作,只能修饰静态方法,主要用于在测试过程中所需要的全局数据和外部资源的初始化和清理

@BeforeEach和@AfterEach:它们所标注的方法会在每个测试用例方法开始前和结束时执行,主要是负责该测试用例所需要的运行环境的准备和销毁。

在idea中运行测试类,看到控制台打印信息如下:
在这里插入图片描述

免费领取 码同学软件测试 课程笔记+超多学习资料+完整视频+最新面试题,可以转发文章 + 私信「码同学666」获取资料哦

可以看到,在整个测试过程中,init函数和end函数只执行了一次,setup和tearDown函数在每次运行test1、test2函数前后分别执行。

重复性测试

在函数上添加@RepeatedTest注解可以指定重复执行的次数

@DisplayName(“我的第三个测试-断言”)

@RepeatedTest(3)

void test3() {
System.out.println(“我的第三个测试开始测试”);

Assertions.assertEquals(1, 1);

}

执行代码,可以看到test3函数连续执行了3次
在这里插入图片描述

断言

在Junit5中,提供了新的断言类Assertions,常见的api:

assertEquals:判断两个数据是否相等

assertNotEquals:判断两个数据是否不相等

assertNotNull:判断对象是否为空

示例:

@DisplayName(“第4个测试”)
@Test
void test4() {
System.out.println(“第4个测试开始测试”);
Assertions.assertEquals(1, 2);
}

执行测试,可以看到case执行失败
在这里插入图片描述

参数化测试

在Junit5中,对参数化提供了非常丰富的支持,比如固定数组、csv文件等。

首先在项目中添加参数化依赖包

org.junit.jupiter junit-jupiter-params 5.5.2 test

数组化参数

在测试函数上添加参数化相关的注解即可,如:

@DisplayName(“第5个测试-参数化测试-数字”)
@ParameterizedTest
@ValueSource(ints = {1,2,3})

void test5(int num) {
System.out.println(“当前数字为:” + num);
}

注解解释:

@ParameterizedTest:运行参数化测试

@ValueSource:参数来源为数组,支持各种基本数据类型的数组,如整型数组ints,字符串数组strings,chars等

按照上述配置,test5函数会运行3次,每次会把数组中的元素传入num值
在这里插入图片描述

CSV文件参数化

Junit支持将参数数据写入到一个csv文件中,然后在测试用例中读取csv文件中的数据。

在项目resource目录下新建一个csv文件,内部保存用户名和token的对应数据
在这里插入图片描述

@DisplayName(“第8个测试-参数化测试-csv文件”)

@ParameterizedTest
@CsvFileSource(resources = “/output.csv”)

void test8(String name, String token) {
System.out.println(“当前姓名为:” + name + “,当前token为:” + token);
}

@CsvFileSource:指定csv文件的路径

在函数名上定义csv文件中每列对应的参数名,这样csv文件中有几行数据,test8函数就会运行几次,并且每次都会传入对应列的数据。
在这里插入图片描述

以上就是Junit常用的一些使用场景,更多Junit的使用方法,可以去Junit官网查看相关的示例。

笔者跟大家分享一个福利!扫码回复【csdn码哥群】入软件测试自学交流群,可免费听技术讲座+领学习资料+视频课免费看
在这里插入图片描述

作者:码同学软件测试
本文著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-02-09 21:00:12  更:2022-02-09 21:00:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 2:38:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码