Java EasyMock:我应该关闭捕获的InputStream吗?
我有一个带有InputStream捕获的单元测试。大概是这样的:Java EasyMock:我应该关闭捕获的InputStream吗?,java,unit-testing,capture,easymock,Java,Unit Testing,Capture,Easymock,我有一个带有InputStream捕获的单元测试。大概是这样的: Capture<InputStream> capturedArgument = new Capture<InputStream>(); // some expectations and the tested method execution here InputStream actualStream = capturedArgument.getValue(); // some assertions here
Capture<InputStream> capturedArgument = new Capture<InputStream>();
// some expectations and the tested method execution here
InputStream actualStream = capturedArgument.getValue();
// some assertions here
Capture capturedArgument=new Capture();
//这里有一些期望和经过测试的方法执行
InputStream actualStream=capturedArgument.getValue();
//这里有一些断言
实际流(在测试中捕获)在测试对象中关闭。
我应该在单元测试中的断言之后手动关闭actualStream吗?或者在实际关闭流之后也会关闭
谢谢。它最终会自动关闭,毕竟大多数finalize方法都会调用close方法。尽管如此,可能还是最好手动执行,因为无法保证垃圾收集器何时调用finalize。关闭资源、使资源可用于其他线程并避免泄漏始终是一个好的决定,但这是一个测试,jvm将在测试结束后关闭,因此它已经完成,您可以保持原样,以保持测试非常小 特别是在本例中,它已经关闭,因为您提到close方法将在应用程序本身中调用。因此,捕获中的流也被关闭 我猜您具有以下调用层次结构: 在朱尼特
- 呼叫业务代码
- 明流
- 调用方法(inputStream)
- 从捕获中获取价值
- 断言某事
- 在一个最后的时间内关闭流
- 测试结束
顺便说一句,如果您尝试多次关闭IOException,您应该会在IOException中收到一条已关闭的消息,这样您就可以两种方式都尝试,对吗?谢谢您的回答!这是清楚的。这很奇怪,但在多次关闭流之后,没有任何例外。因此,我无法检查它是否已经以这种方式关闭。