JUnit测试Stream中的属性值

时间:2017-03-29 12:10:19

标签: java junit java-stream

此问题与我之前在JUnit assertions within in Java 8 stream的问题有关。

如果我有3个对象,如何验证流中对象属性的值?我之前的问题回答了如何测试它们的存在,但我现在需要测试每个属性的值。有人可以给我一个代码片段吗?

1 个答案:

答案 0 :(得分: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();