我正在尝试访问 Google App Engine 项目中/WEB-INF/目录下的静态文件。
以下代码在运行开发服务器时工作正常,但在单元测试中失败。
String name = "WEB-INF/myfiles/myfile.dat";
File file = new File( name );
FileInputStream fis = new FileInputStream( file );
然而,JUnit 测试中的相同代码会引发 FileNotFoundException。
就其值(value)而言,我设置了 LocalServiceTestHelper,因此所有数据存储测试用例都可以正常工作。
单元测试是否在不同的工作目录下运行?如果是,我该如何设置/纠正这个问题?
最佳答案
我不认为它与LocalTestServiceHelper(它配置AE服务的本地实现)有关。您正在运行测试的“当前文件夹”没有“WEB-INF”文件夹[原始或复制到])。
我不确定您如何运行单元测试。某些 IDE 会将非源文件夹复制到“目标”文件夹,在某些情况下,您可以配置运行脚本(ant build.xml、maven pom.xml...)来为您执行此类复制。
尽管可行,因为这是您可能需要考虑的单元测试 隔离源加载部分(您可以对其进行不同的设置) 测试和生产)到处理该源的通用逻辑 你正在测试。
另一种选择是模拟输入源(例如通过 ServletContext.getInputStream 读取并模拟 ServletContext 返回 内容)。
关于java - Junit 测试无法使用 LocalServiceTestHelper 访问文件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35930279/