以经典的方式,发布问题后,我发现了自己想要的片刻。希望这将使下一个人更容易找到,而无需首先知道它的名字。魔术方法是具有欺骗性的简称
as,它是另一个
AbstractAssert实现以下功能的接口的一部分:Descriptable,而不是基本的Assert接口。
public S as(String description, Object... args)设置此对象支持
String.format(String, Object...)语法的描述。
范例:try { // set a bad age to Mr Frodo which is really 33 years old. frodo.setAge(50); // you can specify a test description with as() method ordescribedAs(), it supports String format args
assertThat(frodo.getAge()).as(“check %s’s age”,
frodo.getName()).isEqualTo(33);
} catch (AssertionError e) {
assertThat(e).hasMessage(“[check Frodo’s age] expected:<[33]> but
was:<[50]>”);
}
hasMessage如果断言失败,则catch块中带引号的字符串将出现在单元测试输出日志中。
我是通过在问题中链接
failWithMessage的自定义断言页面中注意到帮助程序来发现此问题的。该方法的JavaDoc指出它是受保护的,因此调用者不能使用它来设置自定义消息。但是它确实提到了
as助手:
此外,此方法支持使用设置的任何描述
as(String,Object...)或用户使用定义的错误消息overridingErrorMessage(String, Object...)。
......而overridingErrorMessage帮手,它完全取代了标准AssertJ
expected: ... but was:...所提供的新的字符串消息。
在功能突出显示页面之前,AssertJ主页没有提到任何一个帮助程序,该页面
as在“ 软断言”部分显示了该帮助程序的示例,但没有直接描述它的作用。



