java file 堵塞_单元测试最终在Java 6中阻塞
首先考慮使用
IOUtils.closeQuietly(),它會將未經測試的代碼(可能是重復代碼)減少為:
try {
f = new BufferedInputStream(new FileInputStream(source));
f.read(buffer);
} finally {
IoUtils.closeQuietly(f);
}
現在變得艱難. “正確”的方法是將BufferedInputStream的創建外部化到另一個類中并注入mock.有了一個模擬,你可以驗證是否調用了適當的close()方法.
@ JeffFoster的答案非常接近我的意思,但是我會推薦組合而不是繼承(以更多的代碼為代價):
try {
f = fileSystem.open(source);
f.read(buffer);
} finally {
IoUtils.closeQuietly(f);
}
其中fileSystem是FileSystem接口的一個實例,其中簡單的實際實現在生產代碼中注入或模擬用于測試.
interface FileSystem {
InputStream open(String file);
}
外部化文件打開的另一個好處是,如果您決定刪除緩沖或添加加密,則只需要修改一個位置.
使用該接口,您可以使用模擬實例化測試代碼(使用Mockito):
//given
FileSystem fileSystemMock = mock(FileSystem.class);
InputStream streamMock = mock(InputStream.class);
given(fileSystemMock.open("file.txt")).willReturn(streamMock);
//when
//your code
//then
verify(streamMock).close();
總結
以上是生活随笔為你收集整理的java file 堵塞_单元测试最终在Java 6中阻塞的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue导出Excel图片
- 下一篇: 电子招投标系统解决方案