Junit Hamcrest:转储当前类型和值

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"))

我正在使用Java库Hamcrest编写测试,它的非流畅API使复杂表达式演变时无法推理表达式类型,如:

.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