[英]GWTTestCase: JUnit Assertions within callback raises JavaScriptException
[英]JUnit assertions within in Java 8 stream
假设我有三个对象保存到数据库并将db生成的ID设置为。 我不知道从方法saveToDb
返回的对象的顺序。 但是我想对这些生成的ID进行测试。 我如何在流中做到这一点? 我想做这样的事情:
List<MyObject> myObjects = getObjects();
numRecords = saveToDb(myObjects); // numRecords=3
List<Integer> intArray = Arrays.asList(1, 2, 3);
intArray.stream()
.forEach(it -> myObjects.stream()
.filter(it2 -> it2.getId().equals(it))
.????
但是我不确定我的assertEquals()
会在这样的语句中出现在哪里。 或者我的方法都错了? 我知道我可以使用简单的for循环,但我喜欢流的优雅。 另外,有没有办法动态创建intArray,以防我有超过3个myObjects?
似乎(如果我理解正确),这样的事情怎么样:
boolean result = Arrays.asList(1, 2, 3).stream()
.allMatch(i -> objects
.stream()
.map(MyObject::getId)
.filter(j -> j == i).findAny().isPresent());
Assert.assertTrue(result);
所以你基本上想检查一个MyObject实例是否被分配了一个ID? 与任何重要性的数组中的ID是否相等?
如果不:
List<MyObject> objects = getObjects();
saveToDb(objects);
objects.stream().map(MyObject::getId).forEach(Assert::assertNotNull);
假设MyObject上有一个“getId”方法。
只需为您的其他问题补充一点:
另外,有没有办法动态创建intArray,以防我有超过3个myObjects?
是的,您可以使用IntStream
根据对象的大小创建流,如:
IntStream.rangeClosed(1, objects.size()) // both start and end inclusive
并且还有一个方法IntStream.range(int start, int end)
,其end
是独占的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.