校园局域网站建设费用,学什么可以先做网站,什么是关键词广告,中国最大的摄影网站首先考虑使用IOUtils.closeQuietly(),它会将未经测试的代码(可能是重复代码)减少为#xff1a;try {f new BufferedInputStream(new FileInputStream(source));f.read(buffer);} finally {IoUtils.closeQuietly(f);}现在变得艰难. “正确”的方法是将BufferedInputStream的创…首先考虑使用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)//givenFileSystem fileSystemMock mock(FileSystem.class);InputStream streamMock mock(InputStream.class);given(fileSystemMock.open(file.txt)).willReturn(streamMock);//when//your code//thenverify(streamMock).close();