Junit Hamcrest:转储当前类型和值
我正在使用Java库Hamcrest编写测试,它的非流畅API使复杂表达式演变时无法推理表达式类型,如:Junit Hamcrest:转储当前类型和值,junit,hamcrest,Junit,Hamcrest,我正在使用Java库Hamcrest编写测试,它的非流畅API使复杂表达式演变时无法推理表达式类型,如: .andExpect(JsonUnitResultMatchers.json() .matches(CoreMatchers.anyOf(CoreMatchers.allOf( JsonMatchers.jsonPartEquals("id", "123"), JsonMatchers.jsonPartEquals("name", "test"))
.andExpect(JsonUnitResultMatchers.json()
.matches(CoreMatchers.anyOf(CoreMatchers.allOf(
JsonMatchers.jsonPartEquals("id", "123"),
JsonMatchers.jsonPartEquals("name", "test")))))
是否始终存在转储当前活动表达式的类型和值的TRUE matcher?比如:
.andExpect(JsonUnitResultMatchers.json()
.matches(CoreMatchers.anyOf(CoreMatchers.allOf(
Slf4jMatcher.logType(),
Slf4jMatcher.logTypeAndToString(),
ConsumerMatcher.apply(System.out::println),
JsonMatchers.jsonPartEquals("id", "123"),
JsonMatchers.jsonPartEquals("name", "test")))))
我不喜欢用调试器单步执行Hamcrest代码。钻研别人的内心是徒劳无益的。我想出了丑陋的:
.andExpect(JsonUnitResultMatchers.json()
.matches(Matchers.hasItem(CoreMatchers.allOf(
new BaseMatcher() {
@Override
public boolean matches(Object item) {
log.info("type: {}", item.getClass());
log.info("toString: {}", item.toString());
return true;
}
@Override
public void describeTo(Description description) {}
},
JsonMatchers.jsonPartEquals("id", "123"),
JsonMatchers.jsonPartEquals("name", "test")))))
我希望有一些有趣的DSL