Junit入门到掌握-12-JUnit高级-高级断言

2024-06-11 10:48

本文主要是介绍Junit入门到掌握-12-JUnit高级-高级断言,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这篇来学习下Junit中的高级断言,前面我们学习过assertEuqals(期待结果,实际结果)这样的表达式去断言。那么什么是高级断言呢,其实就是这种基本断言的一种扩展,一般格式是这样的assertThat(实际结果,匹配规则),高级断言高级就在匹配规则这块的表达式书写,很灵活。

 

1.高级断言

高级断言的格式

这个value就是我们的实际结果,这个方法的名称是assertThat, 然后matcher是一个匹配,学Java正则这块会学习到matcher,我们期待结果就是在matcher中。

 

高级断言中匹配常见方法

这种高级写法,我们断言的种类都写在matcher表达式里,常见的匹配方法有

is
hasItem
containsString
allOf
anyOf

例如这种断言

assertThat(10, is(10))

想了解更多Junit的匹配和高级断言,请查阅github上Junit的wiki介绍

https://github.com/junit-team/junit4/wiki/Matchers-and-assertThat

https://github.com/junit-team/junit4/wiki/Assertions

 

2.高级断言举例

这里新建一个测试类文件AdvAssertTests.java

package test;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.assertThat;import java.util.Arrays;import org.hamcrest.Matcher;
import org.junit.Test;import com.anthony.protein.TrackingService;public class AdvAssertTests {private static TrackingService ts = new TrackingService();@Testpublic void testIs() {ts.addProtein(10);assertThat(ts.getTotal(), is(10));}@Testpublic void testInstaceType() {ts.addProtein(10);assertThat(ts.getTotal(), instanceOf(Integer.class));}@Testpublic void testHasItem() {String[] arr = new String[]{"Tom", "Jack", "Anthony", "Bill"};assertThat(Arrays.asList(arr), hasItems("Anthony", "Jack"));}@Testpublic void testAllOf() {ts.addProtein(10);assertThat(ts.getTotal(), allOf(is(10), instanceOf(Integer.class)));}@Testpublic void testContainsString() {String st = "Hello Junit!!";assertThat(st, containsString("Junit"));}@Testpublic void testAnyOf() {ts.addProtein(10);assertThat(ts.getTotal(), anyOf(is(10), instanceOf(String.class)));}}

上面这些用例都能成功通过,特别是allOf, anyOf, containsString来看,确实好用。特别是一个用例,我们想用多个断言点去测试,这个时候高级断言就很适合。

这篇关于Junit入门到掌握-12-JUnit高级-高级断言的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1050959

相关文章

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性

mysql中的group by高级用法详解

《mysql中的groupby高级用法详解》MySQL中的GROUPBY是数据聚合分析的核心功能,主要用于将结果集按指定列分组,并结合聚合函数进行统计计算,本文给大家介绍mysql中的groupby... 目录一、基本语法与核心功能二、基础用法示例1. 单列分组统计2. 多列组合分组3. 与WHERE结合使

JDK9到JDK21中值得掌握的29个实用特性分享

《JDK9到JDK21中值得掌握的29个实用特性分享》Java的演进节奏从JDK9开始显著加快,每半年一个新版本的发布节奏为Java带来了大量的新特性,本文整理了29个JDK9到JDK21中值得掌握的... 目录JDK 9 模块化与API增强1. 集合工厂方法:一行代码创建不可变集合2. 私有接口方法:接口

PyTorch高级特性与性能优化方式

《PyTorch高级特性与性能优化方式》:本文主要介绍PyTorch高级特性与性能优化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、自动化机制1.自动微分机制2.动态计算图二、性能优化1.内存管理2.GPU加速3.多GPU训练三、分布式训练1.分布式数据

Spring Boot集成SLF4j从基础到高级实践(最新推荐)

《SpringBoot集成SLF4j从基础到高级实践(最新推荐)》SLF4j(SimpleLoggingFacadeforJava)是一个日志门面(Facade),不是具体的日志实现,这篇文章主要介... 目录一、日志框架概述与SLF4j简介1.1 为什么需要日志框架1.2 主流日志框架对比1.3 SLF4

Spring Boot集成Logback终极指南之从基础到高级配置实战指南

《SpringBoot集成Logback终极指南之从基础到高级配置实战指南》Logback是一个可靠、通用且快速的Java日志框架,作为Log4j的继承者,由Log4j创始人设计,:本文主要介绍... 目录一、Logback简介与Spring Boot集成基础1.1 Logback是什么?1.2 Sprin

POI从入门到实战轻松完成EasyExcel使用及Excel导入导出功能

《POI从入门到实战轻松完成EasyExcel使用及Excel导入导出功能》ApachePOI是一个流行的Java库,用于处理MicrosoftOffice格式文件,提供丰富API来创建、读取和修改O... 目录前言:Apache POIEasyPoiEasyExcel一、EasyExcel1.1、核心特性

MySQL复合查询从基础到多表关联与高级技巧全解析

《MySQL复合查询从基础到多表关联与高级技巧全解析》本文主要讲解了在MySQL中的复合查询,下面是关于本文章所需要数据的建表语句,感兴趣的朋友跟随小编一起看看吧... 目录前言:1.基本查询回顾:1.1.查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J1.2.按照部门

解决tomcat启动时报Junit相关错误java.lang.ClassNotFoundException: org.junit.Test问题

《解决tomcat启动时报Junit相关错误java.lang.ClassNotFoundException:org.junit.Test问题》:本文主要介绍解决tomcat启动时报Junit相... 目录tomcat启动时报Junit相关错误Java.lang.ClassNotFoundException