Java 8流中的JUnit断言

时间:2017-03-29 11:39:37

标签: java junit java-stream

假设我有三个对象保存到数据库并将db生成的ID设置为。我不知道方法var mouseIsMoving, // time (ms) after mouse stoped moving to set the flag back to false; mouseMoveTime = 500; window.addEventListener('mousemove', ()=>{ clearTimeout(mouseIsMoving); mouseIsMoving = setTimeout(()=>{ mouseIsMoving = false }, mouseMoveTime); }); ///////////////////////////////////////////////////// // fire some function every 500ms setInterval(someFunc, 500); function someFunc(){ // do whatever ONLY when the mouse is not moving if( !mouseIsMoving ) console.log( new Date().toLocaleTimeString() ) }返回的对象的顺序。但是我想对这些生成的ID进行测试。我如何在流中做到这一点?我想做这样的事情:

saveToDb

但我不确定我的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)) .???? 会在这样的声明中出现在哪里。或者我的方法都错了?我知道我可以使用简单的for循环,但我喜欢流的优雅。另外,有没有办法动态创建intArray,以防我有超过3个myObjects?

3 个答案:

答案 0 :(得分:2)

似乎(如果我理解正确的话),这样的事情怎么样:

 boolean result = Arrays.asList(1, 2, 3).stream()
            .allMatch(i -> objects
                .stream()
                .map(MyObject::getId)
                .filter(j -> j == i).findAny().isPresent());
    Assert.assertTrue(result);

答案 1 :(得分:0)

所以你基本上想检查是否为MyObject实例分配了一个ID? 是否与任何重要性中的数组中的ID相等?

如果不是:

List<MyObject> objects = getObjects();
saveToDb(objects);
objects.stream().map(MyObject::getId).forEach(Assert::assertNotNull);

假设MyObject上有一个“getId”方法。

答案 2 :(得分:0)

为您的其他问题提供一点补充:

  

此外,有没有办法动态创建intArray,以防我有超过3个myObjects?

是的,您可以使用IntStream根据对象的大小创建流,例如:

IntStream.rangeClosed(1, objects.size()) // both start and end inclusive

还有IntStream.range(int start, int end) end独有的方法{/ 1}。