最佳答案
我们有一个主要使用 JUnit 断言和 Hamcrest 匹配器的测试套件。我们的一个团队开始尝试使用 断言,它的语法、灵活性和声明性给人们留下了深刻的印象。JUnit 提供了一个我在 AssertJ 中找不到等价的特性: 添加自定义断言失败消息。
我们经常比较那些不适合人类阅读的对象,它们看起来像是随机 ID 或 UUID,根据它们包含的数据不可能知道它们应该是什么。遗憾的是,对于我们的代码库来说,这是一种不可避免的情况,因为它实现的部分目的是在其他服务之间映射数据,而不一定了解它是什么。
在 JUnit 中,assertThat
方法在 Matcher<T>
参数之前提供一个带有 String reason
参数的版本。这使得添加一个简短的调试字符串来解决这个问题变得非常容易,比如比较对于人类应该意味着什么。
另一方面,AssertJ 提供了大量不同的 广义 static assertThat
方法,它们返回某种形式的 接口断言或其众多实现类之一。此接口不提供将自定义消息设置为包含在故障中的标准方法。
有没有什么方法可以从 AssertJAPI 或其某个扩展获得这种功能,而不需要向 为每个断言类型创建一个自定义断言类添加消息?