java - Google AppEngine + 本地 JUnit 测试 + Jersey 框架 + 嵌入式 Jetty

标签 java google-app-engine junit jersey embedded-jetty

我使用 Google Appengine for Java (GAE/J)。 最重要的是,我使用 Jersey REST 框架。

现在我想运行本地 JUnit 测试。测试

不幸的是,Jersey/Jetty 组合产生了新线程。 GAE 期望只有一个线程运行。 最后,我最终要么在 Jersey 资源中没有数据存储,要么在多个数据存储中拥有不同的数据存储。

作为一种解决方法,我只初始化了一次 GAE 本地环境,将其放入静态变量中,并在 GAE 资源中添加了许多检查(该线程没有开发环境?重新使用静态环境)。 这些 检查当然应该只在 JUnit 测试中运行。直接在此处发布链接:-|)

最佳答案

也许使用系统属性... 当它是 Junit 运行时,通过 JVM arg 设置 Java 系统属性,然后您可以测试这样的东西:

  • 在测试时(可能在 IDE 等中)通过运行配置参数传递 JVM arg,如下所示:-DRunningTestsOnly=true
  • 在代码中:if ("true".equals(System.getProperty("RunningTestsOnly")))

我之前在 JUnit 测试中做过类似的事情,使用 assume 来忽略我认为在我的低功率开​​发 PC 上运行时间太长的测试...

  • 传入 JVM arg:-DexecuteQuickRunningTestsOnly=true
  • 要忽略运行缓慢的测试方法,如果我将属性集放在方法的顶部:assumeThat(System.getProperty("executeQuickRunningTestsOnly", "false"), is("false"));

关于java - Google AppEngine + 本地 JUnit 测试 + Jersey 框架 + 嵌入式 Jetty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2351293/

相关文章:

java - 使用 Selenium 循环遍历 List<WebElement>

java - JpaRepository 的查询将其传递给 Controller

google-app-engine - 阿普塔纳 : Exclude files when deploying a project to App Engine

python - 具有多个嵌套函数的 ndb.Tasklet 和 SyncTasklet

java - Mockito JUnit 测试简单的 api 调用

java - MockitoException - 是一个 *void 方法*,它 *不能* 用 *返回值* stub !

java - (Java) 如何将用户输入字符串拆分为多个整数和 double

java - 所有类如何继承自Object?

google-app-engine - Google App Engine 不更新已部署的文件

java - 将 JUnit 样式的 XML 测试输出渲染为 HTML