在集合上同时匹配多个属性

时间:2014-05-27 09:20:17

标签: java junit hamcrest

是否可以在Collection

中的每个匹配项目上测试多个条件

我有一个给定对象的集合:

  

obj1:property1 = A1,property2 = B1

     

obj2:property1 = A2,property2 = B2

     

obj3:property1 = A3,property2 = B3

     

obj4:property1 = A4,property2 = B4

我想检查property1property2是否同时指定了值。

感谢您的任何建议。

1 个答案:

答案 0 :(得分:2)

当然,这是可能的。它看起来像这样:

Matcher<Item> matcher = new BaseMatcher<Item>() {

    @Override
    public boolean matches(Object item) {
        Item myItem = (Item) item;
        return check(myItem.property1, myItem.property2);
    }

    @Override
    public void describeTo(Description description) {
        // describe it
    }

}

check函数必须测试property1property2的组合。这可能是使用HashMap最简单的方法,除非当然有某种方法可以从另一方计算一个或类似的东西。