我有两个列表,我想验证它们是否具有相同顺序的相同对象。由于这个原因,我使用 hamcrest 但由于某种原因我不明白我收到编译错误:
有人可以解释一下这个错误以及如何修复它吗?
List<String> actual = Arrays.asList("asd", "bc", "qwe");
List<String> expected = Arrays.asList("asd", "bc", "qwe");
assertThat(actual,IsIterableContainingInAnyOrder.containsInAnyOrder(expected));
这是错误消息:
com.me.Test.java:[160,1] no suitable method found for
assertThat(java.util.List<java.lang.String>,org.hamcrest.Matcher<java.lang.Iterable<?
extends java.util.List<java.lang.String>>>)
method org.junit.Assert.<T>assertThat(T,org.hamcrest.Matcher<T>) is not applicable
(no instance(s) of type variable(s) T exist so that argument type
org.hamcrest.Matcher<java.lang.Iterable<? extends java.util.List<java.lang.String>>> conforms to formal parameter type org.hamcrest.Matcher<T>)
method org.junit.Assert.<T>assertThat(java.lang.String,T,org.hamcrest.Matcher<T>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
最佳答案
看看javadoc of IsIterableContainingInAnyOrder.containsInAnyOrder
。假设您不尝试将 Matcher
传递给此方法,则应该将数组(或可变参数)传递给此方法,例如:
assertThat(actual, IsIterableContainingInAnyOrder.containsInAnyOrder("qwe", "asd", "bc"));
或
assertThat(actual,IsIterableContainingInAnyOrder.containsInAnyOrder(expected.toArray(new String[expected.size()])));
关于java - 断言列表与 hamcrest 具有相同的对象失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24575016/