2016-03-11 38 views
0

我试图访问Google App Engine项目中的/ WEB-INF /目录下的静态文件。Junit测试无法使用LocalServiceTestHelper访问文件系统

以下代码在运行dev服务器时工作正常,但在单元测试中失败。

String name = "WEB-INF/myfiles/myfile.dat"; 
File file = new File(name); 
FileInputStream fis = new FileInputStream(file); 

但是,JUnit测试中的相同代码会抛出FileNotFoundException异常。

为什么值得我设置LocalServiceTestHelper,以便所有数据存储测试用例都能正常工作。

单元测试是否在不同的工作目录下运行,如果是这样,我该如何设置/更正?

+0

FileNotFoundException非常具有说明性。您的文件路径需要进行调整,以便测试类可以找到实际的文件。 –

+0

未爆战争中没有实际的档案。 – chrylis

+0

@SandySimonton重点是我无法调整路径,因为GAE不会找到它,所以我在质疑如何调整junit运行时环境以镜像GAE –

回答

1

我不认为它与LocalTestServiceHelper(它配置AE服务的本地实现)有关。您正在运行测试的“当前文件夹”没有[最初或复制到]的“WEB-INF”文件夹)。

我不知道你如何运行你的单元测试。一些IDE会将非源文件夹复制到“目标”文件夹,并且在某些情况下,您可以配置您的运行脚本(ant build.xml,maven pom.xml ...)为您执行此类复制。

然而虽然可行的,因为这是一个单元测试可能要考虑 分离源装载部件(可以不同地设置用于 测试和生产)向共同的逻辑处理该源你是哪个 测试。

另一种选择是模拟输入源(例如,通过ServletContext.getInputStream读取并嘲弄ServletContext返回 的内容)。