我正在尝试访问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,以便所有数据存储测试用例都能正常工作。
单元测试是否使用不同的工作目录运行,如果是,我该如何设置/更正?
答案 0 :(得分:1)
我认为它与LocalTestServiceHelper(配置AE服务的本地实现)无关。您正在运行测试的“当前文件夹”没有[最初或复制到]的“WEB-INF”文件夹。)
我不确定你是如何进行单元测试的。某些IDE会将非源文件夹复制到“target”文件夹,在某些情况下,您可以配置运行脚本(ant build.xml,maven pom.xml,...)来为您执行此类复制。
然而,虽然可行,但这是一个单元测试,您可能需要考虑 隔离源加载部分(可以为其设置不同的加载部分) 测试和生产)到处理那个源的共同逻辑 你正在测试。
另一种选择是模拟输入源(例如通过ServletContext.getInputStream读取并模拟ServletContext以返回 内容)。