Junit测试无法使用LocalServiceTestHelper访问文件系统

时间:2016-03-11 00:52:55

标签: java unit-testing google-app-engine junit

我正在尝试访问Google App Engine项目中/ WEB-INF /目录下的静态文件。

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

然而,虽然可行,但这是一个单元测试,您可能需要考虑 隔离源加载部分(可以为其设置不同的加载部分) 测试和生产)到处理那个源的共同逻辑 你正在测试。

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