我们有一个测试套件,主要使用带有 Hamcrest 匹配器的 JUnit 断言。我们的一个团队开始尝试AssertJ,并以其语法、灵活性和声明性给人们留下了深刻的印象。JUnit 提供了一个我在 AssertJ 中找不到的功能:添加自定义断言失败消息。
我们经常比较那些不是为了人类可读性而制作的对象,它们会有看似随机的 Id 或 UUID,并且不可能通过它们包含的数据来判断它们应该是什么。对于我们的代码库来说,这是一个不可避免的情况,遗憾的是,它实现的部分目的是在其他服务之间映射数据,而不必了解它是什么。
在 JUnit 中,该方法在param之前assertThat
提供了一个带有String reason
参数的版本。Matcher<T>
这使得添加一个简短的调试字符串可以轻松解决问题,例如比较对人类的意义。
另一方面,AssertJ 提供了许多不同的泛型static assertThat
方法,它们返回某种形式的接口 Assert或其众多实现类之一。此接口不提供设置自定义消息以包含在故障中的标准方法。
有没有办法从 AssertJ API 或其扩展之一获得此功能,而不必为我们想要添加消息的每个断言类型创建自定义断言类?