Google App Engine的集成测试(java)

use*_*136 10 testing google-app-engine integration-testing

我正在尝试为我的GAE/j应用程序开发一些有效的集成测试.我熟悉https://developers.google.com/appengine/docs/java/tools/localunittesting - 这些工具非常适合小型单元测试.我现在对开发测试实际Web请求的集成测试感兴趣.例如,我想测试web.xml是否将servlet和过滤器映射到预期的URL并测试我的JSP生成我期望的内容.

我的目标是在JVM中调出一个本地开发服务器,我可以触发请求.不过,我对其他整合策略持开放态度; 正如我上面所说,我只想有效地测试JSP生成和其他请求级功能.

我已经设法使用DevAppServerFactory在同一个JVM中启动开发服务器.但是,它生成的DevAppServer似乎使用来自主JVM的单独的类加载器.这使得测试更具挑战性 - 我不能使用任何本地单元测试Local*TestConfig类来控制此服务器的行为.类似地,我不能通过例如静态来"修改我自己的"钩子来修改行为,因为我可以在测试工具中变异的静态与DevAppServer所看到的静态不同.这使得跳过不是当前测试中心的功能(例如需要登录),注入故障,注入模拟等等具有挑战性.这实际上限制了我可以完全有效地测试代码的方式.

我发现Web上的文档真的缺乏用于App Engine的集成测试.我相信有人之前已经这样做了......你有什么提示或资源可以分享吗?

Rob*_*een 2

基本上,您需要做两件事:

  1. 添加两个 servlet(或其他),它们必须仅在测试期间启用,这允许您远程调用助手上的安装和拆卸。
  2. 让您的 Servlet 引擎以完全单线程的方式服务请求。这是必需的,因为由于某种原因,Google 提供的 Helper 类仅在当前线程中生效。