我使用 Google Appengine for Java (GAE/J)。最重要的是,我使用 Jersey REST 框架。
现在我想运行本地 JUnit 测试。考试
- 设置本地 GAE 开发环境 ( http://code.google.com/appengine/docs/java/tools/localunittesting.html ),
- 启动嵌入式 Jetty 服务器,
- 然后通过 HTTP 向服务器发出请求并检查响应。
不幸的是,Jersey/Jetty 组合产生了新线程。GAE 期望只有一个线程运行。最后,我最终要么在 Jersey-resources 中没有 datstore,要么拥有多个不同的数据存储。
作为一种解决方法,我只初始化 GAE 本地环境一次,将它放在一个静态变量中,并在 GAE 资源中添加许多检查(这个线程没有开发环境?重用静态的)。当然,这些检查应该只在 JUnit 测试中运行。(我之前问过:“我怎样才能知道代码是否在 JUnit 测试中运行?” - 我不允许直接在这里发布链接: -|)