AssertJ是广泛使用的Hamcrest匹配器的替代匹配库。 实际上,对于我自己的项目,我已经更改为仅使用AssertJ-我只是发现流畅的界面和可扩展性非常吸引人。

您可以编写自定义断言,如下所示:

想象一下一种具有强度和饮料类型的咖啡 ,例如EspressoLatte 。 定制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断言相关推荐

  1. assertj断言异常_编写自定义的AssertJ断言

    assertj断言异常 AssertJ是广泛使用的Hamcrest匹配器的替代匹配库. 实际上,对于我自己的项目,我已经更改为仅使用AssertJ-我只是发现流畅的界面和可扩展性非常吸引人. 您可以编 ...

  2. Robot Framework自动化测试框架核心指南-如何使用Java编写自定义的RobotFramework Lib

    如何使用Java编写自定义的RobotFramework Lib 本文包括2个章节 1. Robot Frdamwork中如何调用java Lib库 2.使用 java编写自定义的Lib 本文作者为: ...

  3. CodeGen编写自定义表达式标记

    CodeGen编写自定义表达式标记 CodeGen支持开发人员通过编写plug-in modules插件模块来定义自定义表达式标记的能力,以提供与这些标记相关联的逻辑.这种plug-in module ...

  4. R语言使用table1包绘制(生成)三线表、使用单变量分列构建三线表、编写自定义函数在三线表中添加p值

    R语言使用table1包绘制(生成)三线表.使用单变量分列构建三线表.编写自定义函数在三线表中添加p值 目录

  5. Python使用numpy包编写自定义函数计算平均绝对误差(MAE、Mean Absolute Error)、评估回归模型和时间序列模型、解读MAE

    Python使用numpy包编写自定义函数计算平均绝对误差(MAE.Mean Absolute Error).评估回归模型和时间序列模型.解读MAE 目录

  6. pandas编写自定义函数计算多个数据列的加和(sum)、使用groupby函数和apply函数聚合计算分组内多个数据列的加和

    pandas编写自定义函数计算多个数据列的加和(sum).使用groupby函数和apply函数聚合计算分组内多个数据列的加和 目录

  7. R语言使用table1包绘制(生成)三线表、使用单变量分列构建三线表、编写自定义三线表结构(将因子变量细粒度化重新构建三线图)、为不同的变量显示不同的统计信息

    R语言使用table1包绘制(生成)三线表.使用单变量分列构建三线表.编写自定义三线表结构(将因子变量细粒度化重新构建三线图).为不同的变量显示不同的统计信息 目录

  8. 三线表是什么?R语言使用table1包绘制(生成)三线表、使用单变量分列构建三线表、编写自定义三线表结构(将因子变量细粒度化重新构建三线图)、编写自定义函数在三线表中添加p值

    三线表是什么?R语言使用table1包绘制(生成)三线表.使用单变量分列构建三线表.编写自定义三线表结构(将因子变量细粒度化重新构建三线图).编写自定义函数在三线表中添加p值 目录

  9. pandas编写自定义函数、使用apply函数应用自定义函数基于Series数据生成新的dataframe

    pandas编写自定义函数.使用apply函数应用自定义函数基于Series数据生成新的dataframe 目录 pandas编写自定义函数.使用apply函

最新文章

  1. Java “Resource leak: ‘scanner‘ is never closed“警告的解决办法
  2. WPF中桌面屏保的制作(主要代码)
  3. MaxCompute 多租户数据安全体系
  4. 小汤学编程之JAVA基础day01——JAVA基本概念、第一个JAVA程序
  5. 深入理解Auto Layout 第一弹
  6. jq 检测元素内html变化,jq 监听 textarea 元素内容变化的方法
  7. 数据协作如何解决大数据的大问题
  8. Win下Eclipse提交hadoop程序出错:org.apache.hadoop.security.AccessControlException: Permission denied: user=
  9. 主从同步redis和mysql的区别_mysql主从复制、redis基础、持久化和主从复制
  10. 中国移动边缘计算技术体系与实践
  11. cryptojs AES加密
  12. 已知三角形顶点坐标,求其外接圆的公式
  13. es6入门到五连绝世之双杀(double kill)
  14. 机器学习算法入门与编程实践
  15. FFmpeg-Python 给视频添加文字
  16. 表格识别-pytorch
  17. padbineditor.php,《智龙迷城》padBinEditor修改器教学
  18. Unity3D 页游测评报告
  19. android 功能页面设计,50个优秀用户体验的手机界面设计(APP UI DESIGN)
  20. Lenovo system x3650 M5 Win2016U盘安装过程

热门文章

  1. Spring @Import注解配置类方法内部调用没有注入属性值的坑
  2. Java架构师必看的10本书
  3. StringTokenizer的使用
  4. 1分钟了解协同过滤,pm都懂了
  5. 你不知道ADo.Net中操作数据库的步骤【超详细整理】
  6. spark submit参数及调优
  7. php破坏代码,php不破坏单词截取子字符串
  8. 给数据库表字段设置默认值
  9. 'webpack-dev-server' 不是内部或外部命令,也不是可运行的程序 或批处理文件的解决方法(webpack热加载)
  10. 机器学习评价指标大汇总