Hamcrest describeMismatchSafely总是打印我实现的Object.toString()

时间:2014-12-23 09:16:09

标签: java junit hamcrest

我写了一个自定义匹配器来比较我的对象。除了describeMismatchSafely方法之外,它都有效。我一直在简单地说话,直到我得到这个:

public static TypeSafeMatcher<IMyObj > equalTo(final IMyObj expected) {

    return new TypeSafeMatcher<IMyObj >() {

        @Override
        public void describeTo(final Description description) {
            description.appendText("this value");
        }

        @Override
        public void describeMismatchSafely(final IMyObj myObj, final Description mismatchDescription) {
            mismatchDescription.appendText(" the wrong value");
        }

        @Override
        protected boolean matchesSafely(IMyObj actual) {
            return false;
        }
   }
}

方法describeTo工作正常,但describeMismatchSafely总是打印myObj.toString()而不是我想要的消息:

java.lang.AssertionError: 预期:这个值      得到了:

我用谷歌搜索自定义匹配器实现,似乎每个人都覆盖了describeMismatchSafely方法,它对他们来说效果很好。有什么理由我不应该工作吗?

1 个答案:

答案 0 :(得分:0)

如果您正在使用JUnit的org.junit.Assert#assertThat,请升级到JUnit 4.11以获取a bug fix