我正在尝试编写一个自定义匹配器,在对象图中深入导航以检查重要属性.
assertThat( writeRequest, hasRole("admin") );
Run Code Online (Sandbox Code Playgroud)
当这失败时,我希望看到如下消息:
Expected: "admin"
but: was "read-only"
Run Code Online (Sandbox Code Playgroud)
然而,当断言失败,它打印出toString()的writeRequest,这意味着我需要的信息将是字符串中深.更糟糕的是,沿着对象图是一个生成的类,它不会@Override Object.toString()让你甚至找不到(没有记录或断点)用户的实际角色!
那么,在Hamcrest中,有没有办法自定义but: was子句中出现的输出?
TL;博士:覆盖org.hamcrest.BaseMatcher.describeMismatch(Object item, Description description)
在使用运行测试时,org.hamcrest.collection.IsIterableWithSize我发现测试失败并显示以下消息:
Expected: an iterable with size <1>
but: iterable size was <0>
Run Code Online (Sandbox Code Playgroud)
其中有一个定制的but条款!
查看源代码,IterableWithSize我注意到字符串作为参数"iterable size"传入。通过我发现该方法的地方追溯了这一点。由于具有该方法的实现,如果您让 IDE 生成缺少方法的存根,您将错过它。org.hamcrest.FeatureTypeMatcherfeatureNameorg.hamcrest.TypeSafeDiagnosingMatcherdescribeMismatch(Object,Description)BaseMatcher
| 归档时间: |
|
| 查看次数: |
248 次 |
| 最近记录: |