【发布时间】:2018-05-11 11:41:26
【问题描述】:
我有一堂课,有一个public short status,这行在测试中:
assertThat(order.status, is(0));
但它给了我以下错误:
java.lang.NoSuchMethodError: org.hamcrest.Matcher.describeMismatch(Ljava/lang/Object;Lorg/hamcrest/Description;)V
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:18)
at org.junit.Assert.assertThat(Assert.java:956)
at org.junit.Assert.assertThat(Assert.java:923)
at com.example.OrderTest.testStuff(OrderTest.java:101)
...
但是,如果我执行以下更丑陋的操作,错误就会消失:
assertThat(order.status, is((short) 0));
那是怎么回事? ????
【问题讨论】:
-
你的
order.status是短类型的吗? -
@Cargeh 正如问题的第一行所述,是的。 ??????
-
@GhostCat 但是当 Java 中没有任何
short文字时,它不应该工作吗?is不应该去“好吧,我们这里有一个short和一个int,我知道该怎么做”?除此之外,在我看来,这个问题是最小的、完整的和可验证的...... -
至于重复,那个问题没有回答我的问题。它回答了为什么 Java 中没有短文字。我的问题是为什么
assertThat和is然后关心 short 和 int 之间的区别,而 Java 显然没有区别。