シンプルに思った
Assert.assertThat(
iterator.next(),
Matchers.either(Matchers.nullValue()).or(
Matchers.instanceOf(Double.class)));
したがって、next() が NULL または Double のインスタンスのいずれかを返すようにしたいと思います。みたいな
Assert.assertTrue(next == null || next instanceof Double);
テスト実行 ( assertThat
) の結果は...
java.lang.NoSuchMethodError: org.hamcrest.Matcher.describeMismatch(Ljava/lang/Object;Lorg/hamcrest/Description;)V
at org.hamcrest.core.CombinableMatcher.matchesSafely(CombinableMatcher.java:17)
at org.hamcrest.TypeSafeDiagnosingMatcher.matches(TypeSafeDiagnosingMatcher.java:55)
at org.junit.Assert.assertThat(Assert.java:772)
at org.junit.Assert.assertThat(Assert.java:738
なんで?そして、どのように修正するのですか?
編集
おっしゃる通り、Mockito からの hamcrest lib との衝突がありました。私はそれを修正しました。エラーはありませんが、アサーションが奇妙に失敗します。見てください:
java.lang.AssertionError:
Expected: (null or an instance of java.lang.Double)
got: null
at org.junit.Assert.assertThat(Assert.java:780)
at org.junit.Assert.assertThat(Assert.java:738)
Null が予期されていましたが、null を取得し、テストが失敗しています。