С новой грамматикой Assert при проверке подлинности можно было бы написать
Assert.assertThat(obj1, CoreMatchers.sameInstance(obj2))
вместо
Assert.assertSame(obj1, obj2)
Я пытаюсь подтвердить личность карты. Так что я пишу
Assert.assertThat(map1, CoreMatchers.sameInstance(map2))
где карта имеет тип HashMap<String,String>
Но мои тесты терпят неудачу во время компиляции:
Error:(33, 9) error: no suitable method found for assertThat(Map,Matcher<Map<String,String>>)
method Assert.<T#1>assertThat(String,T#1,Matcher<? super T#1>) is not applicable
(cannot infer type-variable(s) T#1
(actual and formal argument lists differ in length))
method Assert.<T#2>assertThat(T#2,Matcher<? super T#2>) is not applicable
(cannot infer type-variable(s) T#2
(argument mismatch; Matcher<Map<String,String>> cannot be converted to Matcher<? super Map>))
where T#1,T#2 are type-variables:
T#1 extends Object declared in method <T#1>assertThat(String,T#1,Matcher<? super T#1>)
T#2 extends Object declared in method <T#2>assertThat(T#2,Matcher<? super T#2>)
Error:(33) error: no suitable method found for assertThat(Map,Matcher<Map<String,String>>)
Почему JUnit (или Hamcrest) не может определить, какой сопоставитель использовать?
map1
необработаннымMap
илиMap<String, String>
? Если это необработанныйMap
, вероятно, этого не должно быть. - person user2357112 supports Monica   schedule 14.04.2015map1
иmap2
? - person Jesper   schedule 14.04.2015