ste*_*try 6 java collections junit hamcrest
我正在尝试进行测试,检查某个列表是否有项目,而我不关心订单.
我希望能够做到这一点的方法是通过测试项具有某个具有特定值的属性.
我用以下代码隔离了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;
}
}
Run Code Online (Sandbox Code Playgroud)
识别TestClass
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"))));
}
}
Run Code Online (Sandbox Code Playgroud)
此测试失败.如果我在countainsInAnyOrder中切换列表的值,那么这是有效的.这并不是我对"containsInAnyOrder"的期望.
这样做的正确方法是什么?
或者有没有办法检查个别值是否存在?
我发现了问题所在.它确实是一个引起问题的hamcrest类的版本.
采取的步骤:
所以基本上是使用mockito-all引起的冲突.
| 归档时间: |
|
| 查看次数: |
6858 次 |
| 最近记录: |