7

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

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

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

作为一种解决方法,我只初始化 GAE 本地环境一次,将它放在一个静态变量中,并在 GAE 资源中添加许多检查(这个线程没有开发环境?重用静态的)。当然,这些检查应该只在 JUnit 测试中运行。(我之前问过:“我怎样才能知道代码是否在 JUnit 测试中运行?” - 我不允许直接在这里发布链接: -|)

4

2 回答 2

7

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

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

我之前在 JUnit 测试中做过类似的事情,使用假设忽略测试,我认为在我动力不足的开发 PC 上运行需要太长时间......

  • 传入 JVM 参数:-DexecuteQuickRunningTestsOnly=true
  • 如果我将属性集放在方法的顶部,则忽略运行缓慢的测试方法:assumeThat(System.getProperty("executeQuickRunningTestsOnly", "false"), is("false"));
于 2010-03-04T07:15:01.700 回答
1

只是一个想法:您可以创建一个异常,然后遍历异常的堆栈跟踪,以查看其中的 junit 包中是否有一个类。

于 2010-05-09T07:08:50.887 回答