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

相关文章

Spring WebClient从入门到精通

《SpringWebClient从入门到精通》本文详解SpringWebClient非阻塞响应式特性及优势,涵盖核心API、实战应用与性能优化,对比RestTemplate,为微服务通信提供高效解决... 目录一、WebClient 概述1.1 为什么选择 WebClient?1.2 WebClient 与

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

从入门到精通详解LangChain加载HTML内容的全攻略

《从入门到精通详解LangChain加载HTML内容的全攻略》这篇文章主要为大家详细介绍了如何用LangChain优雅地处理HTML内容,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录引言:当大语言模型遇见html一、HTML加载器为什么需要专门的HTML加载器核心加载器对比表二

从入门到进阶讲解Python自动化Playwright实战指南

《从入门到进阶讲解Python自动化Playwright实战指南》Playwright是针对Python语言的纯自动化工具,它可以通过单个API自动执行Chromium,Firefox和WebKit... 目录Playwright 简介核心优势安装步骤观点与案例结合Playwright 核心功能从零开始学习

全面掌握 SQL 中的 DATEDIFF函数及用法最佳实践

《全面掌握SQL中的DATEDIFF函数及用法最佳实践》本文解析DATEDIFF在不同数据库中的差异,强调其边界计算原理,探讨应用场景及陷阱,推荐根据需求选择TIMESTAMPDIFF或inte... 目录1. 核心概念:DATEDIFF 究竟在计算什么?2. 主流数据库中的 DATEDIFF 实现2.1

SpringBoot中如何使用Assert进行断言校验

《SpringBoot中如何使用Assert进行断言校验》Java提供了内置的assert机制,而Spring框架也提供了更强大的Assert工具类来帮助开发者进行参数校验和状态检查,下... 目录前言一、Java 原生assert简介1.1 使用方式1.2 示例代码1.3 优缺点分析二、Spring Fr

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

从入门到精通MySQL联合查询

《从入门到精通MySQL联合查询》:本文主要介绍从入门到精通MySQL联合查询,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下... 目录摘要1. 多表联合查询时mysql内部原理2. 内连接3. 外连接4. 自连接5. 子查询6. 合并查询7. 插入查询结果摘要前面我们学习了数据库设计时要满

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat