代码之家  ›  专栏  ›  技术社区  ›  Dave Jackson

google appengine+本地junit测试+jersey框架+嵌入式jetty

  •  6
  • Dave Jackson  · 技术社区  · 5 年前

    我使用谷歌AppEngine作为Java(GAE/J)。 最重要的是,我使用jersey rest框架。

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

    不幸的是,jersey/jetty组合产生了新的线程。gae只需要运行一个线程。 最后,我在jersey资源中要么没有数据存储,要么有多个不同的数据存储。

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

    2 回复  |  直到 14 年前
        1
  •  5
  •   Chris B    14 年前

    可能使用系统属性… 当它是JUnit运行时,通过JVM ARG设置Java系统属性,然后您可以对这样的东西进行测试:

    • 在进行如下测试时(可能在ide中)通过run config parms传入一个jvm arg: -DRunningTestsOnly=true
    • 代码中: if ("true".equals(System.getProperty("RunningTestsOnly")))

    我以前在JUnit测试中也做过类似的工作,使用“假设忽略”测试,我认为在我的开发不足的PC上运行需要太长时间…

    • 传入JVM参数: -DexecuteQuickRunningTestsOnly=true
    • 如果属性集位于方法的顶部,则忽略运行缓慢的测试方法: assumeThat(System.getProperty("executeQuickRunningTestsOnly", "false"), is("false"));
        2
  •  1
  •   sme    14 年前

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