2017-03-29 37 views

回答

0

您可以按期望值筛选属性并对结果条目进行计数。这个数字必须等于原始大小。

List<Integer> expected = Arrays.asList(1, 2, 3); 
long count = objects.stream() 
    .map(MyObject::getId) 
    .filter(id -> expected.contains(id.intValue())) 
    .count(); 
Assert.assertEquals(objects.size(), (int) count); 

如果您要检查在一个流中的所有属性,像这样做:

long count = objects.stream() 
    .filter(o-> expectedIds.contains(o.getId().intValue())) 
    .filter(o-> expectedNames.contains(o.getName())) 
    // and so on 
    .count(); 
+0

我需要做的这对每个单独的属性,对不对?我想要一种方法来在一个语句中测试一个对象。那可能吗? – user1660256

+0

不,你不知道。不要为每个你想要检查的房产进行“地图”和过滤, G。 '.filter(o - > expectedIds.contains(o.getId()。intValue()))' –

+0

提示:我不会检查一个流中的所有属性来验证**哪个**属性是错误的 –