例如,对于这个断言 -
aString = "堆栈溢出"; 另一个字符串=“堆栈”;
assertThat(aString).startsWith(anotherString);
是否可以添加这样的记录器 -
assertThat(aString ["堆栈溢出"]).startsWith(另一个强["堆栈"])
..或类似的东西。我感兴趣的是隐式记录断言的类型以及断言下字段的名称和当前值。
最佳答案
您应该阅读 AssertJ 的代码(对于您的示例,这将是 AbstractStringAssert 、 AbstractCharSequenceAssert 和 AbstractAssert ),您将得到答案:这在 AssertJ 中直接是不可能的。即使在失败的情况下,错误也应该清楚地表明正在测试的断言。
但是您可以通过其他方式做到这一点:
- 在 AssertJ 上启用代码覆盖率,这将至少提供测试中使用的 AssertJ 的类/方法(但您不需要这些值)。
- 尝试使用 ASM 或字节码操作来自己实现这一点。
- fork AssertJ 存储库并添加您自己的日志记录™:您可以通过查看断言失败时执行的操作并在失败案例后添加附加日志来侵入。
关于java - 使用assertj时是否可以记录被断言的字段的名称和值以及条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57334283/