编写自定义的AssertJ断言
AssertJ是广泛使用的Hamcrest匹配器的替代匹配库。 实际上,对于我自己的项目,我已经更改为仅使用AssertJ-我只是发现流畅的界面和可扩展性非常吸引人。
您可以编写自定义断言,如下所示:
想象一下一种具有强度和饮料类型的咖啡 ,例如Espresso或Latte 。 定制CoffeeAssert
根据其定制业务逻辑(在本例中为其属性)验证咖啡实例。
public class CoffeeAssert extends AbstractAssert<CoffeeAssert, Coffee> {public CoffeeAssert(Coffee actual) {super(actual, CoffeeAssert.class);}public static CoffeeAssert assertThat(Coffee actual) {return new CoffeeAssert(actual);}public CoffeeAssert hasType(Coffee.Type type) {isNotNull();if (actual.getType() != type) {failWithMessage("Expected the coffee type to be <%s> but was <%s>", type, actual.getType());}return this;}// hasStrength(Strength) omitted ...public CoffeeAssert isNotDecaf() {isNotNull();if (actual.getStrength() == Coffee.Strength.DECAF) {failWithMessage("Expected a coffee but got decaf!");}return this;}
}
然后可以使用自定义断言简单地验证咖啡实例。 assertThat
的静态导入必须引用CoffeeAssert
。
import static com.example.coffee.CoffeeAssert.assertThat;
...Coffee coffee = new Coffee();
coffee.setStrength(Strength.STRONG);
coffee.setType(Type.ESPRESSO);assertThat(coffee).hasType(Type.ESPRESSO).isNotDecaf();
使用自定义断言可以极大地提高测试代码的质量。
这篇帖子从我的新闻简讯012中转贴了
发现帖子有用吗? 订阅我的时事通讯,获取有关IT和Java的更多免费内容,技巧和窍门:
翻译自: https://www.javacodegeeks.com/2018/01/write-custom-assertj-assertions.html
编写自定义的AssertJ断言相关推荐
- assertj断言异常_编写自定义的AssertJ断言
assertj断言异常 AssertJ是广泛使用的Hamcrest匹配器的替代匹配库. 实际上,对于我自己的项目,我已经更改为仅使用AssertJ-我只是发现流畅的界面和可扩展性非常吸引人. 您可以编 ...
- Robot Framework自动化测试框架核心指南-如何使用Java编写自定义的RobotFramework Lib
如何使用Java编写自定义的RobotFramework Lib 本文包括2个章节 1. Robot Frdamwork中如何调用java Lib库 2.使用 java编写自定义的Lib 本文作者为: ...
- CodeGen编写自定义表达式标记
CodeGen编写自定义表达式标记 CodeGen支持开发人员通过编写plug-in modules插件模块来定义自定义表达式标记的能力,以提供与这些标记相关联的逻辑.这种plug-in module ...
- R语言使用table1包绘制(生成)三线表、使用单变量分列构建三线表、编写自定义函数在三线表中添加p值
R语言使用table1包绘制(生成)三线表.使用单变量分列构建三线表.编写自定义函数在三线表中添加p值 目录
- Python使用numpy包编写自定义函数计算平均绝对误差(MAE、Mean Absolute Error)、评估回归模型和时间序列模型、解读MAE
Python使用numpy包编写自定义函数计算平均绝对误差(MAE.Mean Absolute Error).评估回归模型和时间序列模型.解读MAE 目录
- pandas编写自定义函数计算多个数据列的加和(sum)、使用groupby函数和apply函数聚合计算分组内多个数据列的加和
pandas编写自定义函数计算多个数据列的加和(sum).使用groupby函数和apply函数聚合计算分组内多个数据列的加和 目录
- R语言使用table1包绘制(生成)三线表、使用单变量分列构建三线表、编写自定义三线表结构(将因子变量细粒度化重新构建三线图)、为不同的变量显示不同的统计信息
R语言使用table1包绘制(生成)三线表.使用单变量分列构建三线表.编写自定义三线表结构(将因子变量细粒度化重新构建三线图).为不同的变量显示不同的统计信息 目录
- 三线表是什么?R语言使用table1包绘制(生成)三线表、使用单变量分列构建三线表、编写自定义三线表结构(将因子变量细粒度化重新构建三线图)、编写自定义函数在三线表中添加p值
三线表是什么?R语言使用table1包绘制(生成)三线表.使用单变量分列构建三线表.编写自定义三线表结构(将因子变量细粒度化重新构建三线图).编写自定义函数在三线表中添加p值 目录
- pandas编写自定义函数、使用apply函数应用自定义函数基于Series数据生成新的dataframe
pandas编写自定义函数.使用apply函数应用自定义函数基于Series数据生成新的dataframe 目录 pandas编写自定义函数.使用apply函
最新文章
- Java “Resource leak: ‘scanner‘ is never closed“警告的解决办法
- WPF中桌面屏保的制作(主要代码)
- MaxCompute 多租户数据安全体系
- 小汤学编程之JAVA基础day01——JAVA基本概念、第一个JAVA程序
- 深入理解Auto Layout 第一弹
- jq 检测元素内html变化,jq 监听 textarea 元素内容变化的方法
- 数据协作如何解决大数据的大问题
- Win下Eclipse提交hadoop程序出错:org.apache.hadoop.security.AccessControlException: Permission denied: user=
- 主从同步redis和mysql的区别_mysql主从复制、redis基础、持久化和主从复制
- 中国移动边缘计算技术体系与实践
- cryptojs AES加密
- 已知三角形顶点坐标,求其外接圆的公式
- es6入门到五连绝世之双杀(double kill)
- 机器学习算法入门与编程实践
- FFmpeg-Python 给视频添加文字
- 表格识别-pytorch
- padbineditor.php,《智龙迷城》padBinEditor修改器教学
- Unity3D 页游测评报告
- android 功能页面设计,50个优秀用户体验的手机界面设计(APP UI DESIGN)
- Lenovo system x3650 M5 Win2016U盘安装过程