有没有办法使用JUnit测试/模拟文件输入?

5

我想在不使用真实的xls文件的情况下测试以下代码…

File file = new File("file.xls");
final FileInputStream input = new FileInputStream(file);

我的问题是我无法创建File实例,也不知道如何模拟创建新文件并模拟预期结果。

是否有办法在JUnit中实现这个功能?

谢谢。


1
我的问题是我无法创建一个文件实例 - 为什么? - Sergey Shustikov
无法使用new File()创建新文件;我不知道要实现哪种方法才能创建一个实例。 - jpganz18
1个回答

1

是的,有几种不同的方法。

您可以使用类似Powermock的东西来拦截对new的调用。请参见此其他答案,我在其中详细解释了如何做到这一点 EasyMock - mock object returned from new Object

您实际上想要来自Excel文件的字节还是“Excel对象”?将代码重构以传递一个Workbook对象或您用于解析Excel下游的任何内容,然后使用依赖项注入可能是值得的。然后,您的测试可以注入一个模拟的Workbook对象而不是一个真实文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接