首页 > 解决方案 > 如何检查 Java 8 Stream 是否关闭?

问题描述

我有一个带有底层 IOStream 的 java 8 流,我想确保我的方法关闭该流。

有没有办法通过单元测试来检查它?

标签: unit-testingjava-8stream

解决方案


我认为为 Stream 的onClose方法提供处理程序是最简单的方法。

AtomicBoolean wasClosed = new AtomicBoolean(false);
Stream<> stream = Stream.of(foo, bar).onClose(() -> wasClosed.set(true));

// ...code under test that uses the stream

assertThat(wasClosed.get()).isTrue();

对于它的价值,我合法地需要对此进行测试,因为我们从 JDBC ResultSets 制作 Streams,而实际的 Stream 依赖于 onClose 来关闭 ResultSet。


推荐阅读