我使用Google Appengine for Java(GAE/J)。 最重要的是,我使用Jersey REST框架。Google AppEngine +本地JUnit测试+ Jersey框架+嵌入式Jetty
现在我想运行本地JUnit测试。测试
- 树立当地GAE开发环境(http://code.google.com/appengine/docs/java/tools/localunittesting.html)
- 启动嵌入式Jetty服务器,
- ,然后通过HTTP和检查响应触发请求到服务器。
不幸的是,Jersey/Jetty组合产生了新的线程。 GAE预计只有一个线程可以运行。最后,我最终没有在泽西资源或多个数据存储中拥有不同的数据存储,而是拥有不同的数据存储。
作为一种解决方法,我只将GAE本地env初始化一次,将其放入静态变量中,并在GAE资源内部添加许多检查(此线程没有开发环境?重新使用静态环境)。而这些检查当然应该只在JUnit测试中运行..(我之前问过:“我怎样才能知道代码是否在JUnit测试中运行?” - 我不允许直接发送链接位置: - |)
另外考虑使用环境变量,通过例如'String runLevel = System.getenv(“RUN_LEVEL”);'在代码中进行访问。 *独立于语言的机制很受欢迎,它允许程序在不同的环境(开发,测试,集成,CI,生产等)中拥有不同的配置参数。 – gb96 2017-08-23 05:39:02