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

标签 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。

就其值(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/

相关文章:

python - 如何使用 App Engine app.yaml 文件中定义的路由来提供来自 Google Cloud Storage 的内容?

java - 使用 Jetty 支持 Angular 2 的 PathLocationHandler(使用 404 错误页面)

node.js - 使用 Spectron 和 Travis 测试 Electron 应用程序

c++ - 无法调试 UT,因为它会导致编译失败

c# - 如何将类装饰为无法测试代码覆盖率?

python - webapp2 请求参数/处理程序参数的自动转换?

java - ProGuard 不工作

java - 如何在整个 java 类中创建变量?

java - 编译器正在创建带有 $ 的额外类文件

python - Appengine SDK 1.7.3 未检测到更新的文件