我正在将Collection<Event>
插入表格中
Collection<Event> eventCollection = service.insert(events);
现在,我需要测试Event
中的eventCollection
个具有某些属性。我不确定Event
在eventCollection
中存储的顺序。目前,这就是我的断言方式。
assertTrue(
Iterables.get(eventCollection, 0).getPojo.getField1()
.equals("Some Value") &&
Iterables.get(eventCollection, 0).getPojo.getField2()
.equals("Some Value") &&
Iterables.get(eventCollection, 0).getPojo.getField3()
.equals("Some Value") &&
Iterables.get(eventCollection, 1).getPojo.getField1()
.equals("Some Value") &&
eventCollection, 1).getPojo.getField2()
.equals("Some Value") &&
Iterables.get(eventCollection, 1).getPojo.getField3()
.equals("Some Value"))
);
我知道eventCollection
中有两个元素,但是我不确定它们的顺序。Iterables.get
似乎可以正常工作,但是我想知道是否有任何更简单的方法/使用流api进行此操作的更短方法?
编辑:"Some Value"
不一定总是引用String
。
答案 0 :(得分:1)
为了获得最大的清晰度,我建议将低级谓词封装到一个辅助方法中,并使用Stream.allMatch进行检查。
Helper函数(假定放置在类Context
中,确切位置无关紧要):
public static boolean expectedValues(Event event) {
return event.getPojo().getField1().equals("Some Value") &&
event.getPojo().getField2().equals("Some Value") &&
event.getPojo().getField3().equals("Some Value");
}
实际检查,确实更加不言而喻:
assertTrue(eventCollection.stream().allMatch(Context::expectedValues));