AssertJ Fest Hamcrest

我以前曾在博客中介绍过Hamcrest ,并使用其assertThat方法优先于JUnit的Assert 。

但是,我很快发现了FEST断言 ,并愉快地切换到它。 它提供了与Hamcrest相同的改进的测试可读性,并改善了故障消息,但具有启用IDE自动完成功能的额外好处,而不必搜索软件包和类文档以找到合适的匹配器。

不幸的是,Fest似乎不再被积极开发。 1.x分支的最后一个稳定版本1.4于2011年发布,而新的2.x分支从未使其成为稳定版本,并且自2013年6月以来就没有提交过。

输入AssertJ …

断言J

AssertJ是Fest Assert的一个分支 ,并且似乎提供了所有好处以及一系列新功能 。

馆藏

例如,它具有我最喜欢Fest的所有漂亮集合处理:

List<String> stringList = Lists.newArrayList("A", "B", "C");assertThat(stringList).contains("A"); //trueassertThat(stringList).doesNotContain("D"); //trueassertThat(stringList).containsOnly("A"); //falseassertThat(stringList).containsExactly("A", "C", "B"); //falseassertThat(stringList).containsExactly("A", "B", "C"); //true

失败前收集所有错误

它还具有在发生故障之前捕获所有故障的能力。 例如,上述示例将作为第一个失败的假设而失败。 下面的示例使您可以查看所有失败的断言:

List<String> stringList = Lists.newArrayList("A", "B", "C");SoftAssertions softly = new SoftAssertions();softly.assertThat(stringList).contains("A"); //truesoftly.assertThat(stringList).containsOnly("A"); //falsesoftly.assertThat(stringList).containsExactly("A", "C", "B"); //falsesoftly.assertThat(stringList).containsExactly("A", "B", "C"); //true// Don't forget to call SoftAssertions global verification!softly.assertAll();

并产生如下消息:

The following 2 assertions failed:
1) 
Expecting:<["A", "B", "C"]>
to contain only:<["A"]>
elements not found:<[]>
and elements not expected:<["B", "C"]>
2) 
Actual and expected have the same elements but not in the same order, at index 1 actual element was:<"B">
whereas expected element was:<"C">

绝对值得一看。 AssertJ核心代码和问题跟踪器托管在github上。

翻译自: https://www.javacodegeeks.com/2014/10/assertj-fest-hamcrest.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/362167.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Edge浏览器开发人员工具

UserAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240" 本地存储/会话存储模拟达到上限 资源终于全部列表出来了 删除 Cookie 和 删除会话 Cookie 样式可以实时编辑了 …

作为入门开发者应该知道的事

前言 如果你是开始学习编程并且决心学好&#xff0c;或者你刚离开学校还没有工作&#xff0c;这篇文章刚好适合你 我将分享作为开发者在工作过程中积累的关键点和隐藏的真相 编程是件困难的事&#xff0c;不仅仅对你而言 没有人说过编程是简单的事情&#xff0c;如果是的话&…

linux 第一个内核模块Hello World

内核模块是Linux内核向外部提供的一个插口&#xff0c;其全称为动态可加载内核模块&#xff08;Loadable Kernel Module&#xff0c;LKM&#xff09;&#xff0c;我们简称为模块。Linux内核之所以提供模块机制&#xff0c;是因为它本身是一个单内核&#xff08;monolithic kern…

懒惰和贪婪-正则回溯

需要一定的正则基础&#xff0c;并且是基于JS写的文章。 正则表达式是从左往右匹配的。在使用正则表达式的时候我们知道/.*/可以匹配一个字字符串中所有的字符&#xff0c;/.*?/却一个字符都匹配不到。/(.*)\d/中的.\*可以匹配除了最后一位数字的所有字符&#xff0c;但是之前…

简单的Java SSH客户端

可以使用jcabi-ssh在Java中通过几行代码通过SSH执行shell命令&#xff1a; String hello new Shell.Plain(new SSH("ssh.example.com", 22,"yegor", "-----BEGIN RSA PRIVATE KEY-----...") ).exec("echo Hello, world!");jcabi-ssh…

【JS复习笔记】00 序

作为一个前端苦手&#xff0c;说是复习&#xff0c;你就当我是重学好了。 好吧&#xff0c;我当然不可能抱着一个砖头去复习&#xff0c;所以捡了本薄的来读——《JavaScript语言精粹》。 当初带我的人说这本书挺好&#xff0c;就看这本书好了。我觉得他说的挺对。我喜欢这么…

高并发网络架构解决方案分析

1&#xff1a;html静态化2&#xff1a;图片服务器分离3&#xff1a;数据库集群4&#xff1a;缓存5&#xff1a;负载均衡大型高并发高负载网站的系统架构我在Cernet做过拨号接入平台的搭建&#xff0c;而后在Yahoo3721负载搜索引擎前端平台开发&#xff0c;又在猫扑处理过大型社…

Generator执行步骤浅析

在Generator函数出现之前JS的函数只能返回一个值&#xff0c;返回的方式就是return&#xff0c;但是Generator函数可以返回多个值&#xff0c;返回的方式是yield。并且Generator赋予了外部动态影响函数内部的执行顺序的能力。 基础语法 function* f () {const a yield 1cons…

使用 jQuery.Pin 垂直滚动时固定导航

ZKEACMS的导航默认是不能固定的&#xff0c;随着页面的滚动而滚动&#xff0c;为了有更好的用户体验&#xff0c;当页面往下滚动时&#xff0c;可以将导航固定在顶端&#xff0c;这样方便用户点击。 jQuery Pin 借助jQuery的一个插件 jQuery.Pin&#xff0c;这个插件可在用来…

班级名称

在Java中&#xff0c;每个类都有一个名称。 类位于软件包中&#xff0c;这使我们程序员可以一起工作&#xff0c;避免名称冲突。 我可以为A类命名&#xff0c;也可以为A类命名&#xff0c;只要它们位于不同的程序包中&#xff0c;它们就可以很好地协同工作。 如果您查看Class的…

MDK升级后的头文件冲突

////TITLE:// MDK升级后的头文件冲突//AUTHOR:// norains//DATE:// Friday 17-June-2011//Environment:// Keil MDK 4.2// .NET Micro Framework Porting 4.1// 因为在移植的时候&#xff0c;发现了不少MDK编译的一些问题&#xff0c;于是便想升级到最新版本&a…

内置假对象

尽管模拟对象是进行单元测试的理想工具&#xff0c;但通过模拟框架进行模拟可能会将您的单元测试变成难以维护的混乱。 这种复杂性的根本原因是我们的对象太大。 他们有很多方法&#xff0c;这些方法返回其他对象&#xff0c;这些对象也有方法。 当将此类对象的模拟版本作为参…

微信小程序面试题

小程序与原生App哪个好&#xff1f; 答&#xff1a; 小程序除了拥有公众号的低开发成本、低获客成本低以及无需下载等优势&#xff0c;在服务请求延时与用户使用体验是都得到了较大幅度 的提升&#xff0c;使得其能够承载跟复杂的服务功能以及使用户获得更好的用户体验。 简单…

阻止默认事件

在JS中经常需要阻止元素的默认事件。而阻止默认事件的方法都是使用事件对象的preventDefault()方法或者在函数中return false。在最近一次开发中使用preventDefault()方法的时候遇到一个问题&#xff0c;现在才想/猜明白原因&#xff0c;场景是这样的&#xff1a; <a href&…

MySQL之SQL优化详解(三)

目录 MySQL 之SQL优化详解&#xff08;三&#xff09; 1. 索引优化2. 剖析报告:Show ProfileMySQL 之SQL优化详解&#xff08;三&#xff09; 1. 索引优化 一旦建立索引&#xff0c;select 查询语句的where条件要尽量符合最佳左前缀的原则&#xff0c;如若能做到全值匹配最好。…

jUnit:规则

规则在测试&#xff0c;测试用例或测试套件周围增加了特殊处理。 他们可以对类中的所有测试执行通用的其他验证&#xff0c;并发运行多个测试实例&#xff0c;在每个测试或测试用例之前设置资源&#xff0c;然后将其拆除。 该规则可以完全控制将要应用到的测试方法&#xff0c…

常用浏览器内核:

浏览器内核又可以分为两部分&#xff1a;渲染引擎和JS引擎。 PC端&#xff1a;IE&#xff1a;Trident&#xff0c;沿用到IE11,即兼容模式。 IE8 的 JavaScript 引擎是 Jscript&#xff0c;IE9&#xff08;PS: JS内核&#xff09; 开始用 Chakra&#xff0c;这两个版本区别很大…

行内格式化

相对于熟知的块级格式化上下文&#xff0c;行内格式化上下文更加的复杂难明。行内元素不像块级元素那样直来直去&#xff0c;一个块级元素占据一行&#xff0c;其他块级元素在垂直方向依次向下排列即可。行内元素不同&#xff0c;多个行内元素可以在一行显示&#xff0c;那么&a…

[转载]struts+hibernate遇到的错误总结

原文地址&#xff1a;strutshibernate遇到的错误总结作者&#xff1a;畫上句號经过对strutshibernate几天的学习&#xff0c;大体上还算比较的了解机制&#xff0c;以前学习的时候都是 单个框架训练&#xff0c;没有结合2个框架做&#xff0c;所以今天就找了个网上发布租房信息…

JPA休眠替代方案。 如果JPA或Hibernate对于我的项目而言不够好,该怎么办?

你好&#xff01;你好吗&#xff1f; 今天&#xff0c;我们将讨论不建议使用JPA / Hibernate的情况。 在JPA领域之外&#xff0c;我们还有哪些选择&#xff1f; 我们将谈论的是&#xff1a; JPA /休眠问题 解决一些JPA /休眠问题的方法 选择此处描述的框架的标准 Spring J…