我正在尝试进行测试,以检查某个列表中是否包含项目,而我并不关心订单。
我希望能够执行此操作的方法是通过测试项目具有具有特定值的特定属性。
我用以下代码隔离了senario:
我正在使用的课程:
public class A {
private String propA;
public A (final String propA) {
this.propA = propA;
}
public String getPropA() {
return propA;
}
public void setPropA(final String propA) {
this.propA = propA;
}
}
测试类
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.beans.HasPropertyWithValue.hasProperty;
import static org.hamcrest.collection.IsIterableContainingInAnyOrder.containsInAnyOrder;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
public class HamcrestCollectionTest {
@Test
public void testContainsInAnyOrder() {
List<A> list = new ArrayList<A>();
list.add(new A("a"));
list.add(new A("b"));
assertThat(list, containsInAnyOrder(hasProperty("propA", equalTo("b")), hasProperty("propA", equalTo("a"))));
}
}
该测试失败。如果我在countainsInAnyOrder内部切换列表的值,则可以使用。这与我对“ containsInAnyOrder”的期望并不完全相同。
正确的方法是什么?
还是有办法检查各个值是否存在?
我发现了问题所在。确实是引起问题的hamcrest类的一个版本。
采取的步骤:
因此,从根本上讲,这是由使用mockito-all引起的冲突。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句