首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何比较Java 8中的两个Streams

如何比较Java 8中的两个Streams
EN

Stack Overflow用户
提问于 2018-03-19 04:09:53
回答 2查看 0关注 0票数 0

Stream在Java 8中比较两个实例并找出它们是否具有相同的元素,特别是用于单元测试的目的是什么?

我现在得到的是:

代码语言:javascript
复制
@Test
void testSomething() {
  Stream<Integer> expected;
  Stream<Integer> thingUnderTest;
  // (...)
  Assert.assertArrayEquals(expected.toArray(), thingUnderTest.toArray());
}

或者可选地:

代码语言:javascript
复制
Assert.assertEquals(
    expected.collect(Collectors.toList()),
    thingUnderTest.collect(Collectors.toList()));

但这意味着我正在构建两个集合并放弃它们。考虑到我的测试流的大小,这不是性能问题,但我想知道是否有一种比较两个流的规范方法。

EN

回答 2

Stack Overflow用户

发布于 2018-03-19 12:30:57

代码语言:javascript
复制
static void assertStreamEquals(Stream<?> s1, Stream<?> s2)
{
    Iterator<?> iter1 = s1.iterator(), iter2 = s2.iterator();
    while(iter1.hasNext() && iter2.hasNext())
        assertEquals(iter1.next(), iter2.next());
    assert !iter1.hasNext() && !iter2.hasNext();
}
票数 0
EN

Stack Overflow用户

发布于 2018-03-19 13:47:20

收集测试stream是执行测试的直接而有效的方式。您可以用最简单的方式创建预期结果列表,这可能不是收集stream。

另外,大多数库可以创建模拟合作者,人们可以嘲笑一个Consumer“预计”一系列accept()具有特定元素的调用。消耗Stream它,然后“verify”其配置的期望得到满足。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100007666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档