首页 文章

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

提问于
浏览
6

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

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

不幸的是,Jersey / Jetty组合产生了新的线程 . GAE期望只运行一个线程 . 最后,我最终在Jersey-resources内部没有数据存储区,也没有多个数据存储区 .

作为一种解决方法,我只将GAE本地环境初始化一次,将其置于静态变量中,并在GAE资源内部添加许多检查(此线程没有开发环境?重新使用静态环境变量) . 这些检查当然只能在JUnit测试中运行..(之前我问过:"How can I find out if code is running inside a JUnit test or not?" - 我不允许直接在这里发布链接: - |)

2 回答

  • 5

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

    • 在测试时(在IDE等中)通过运行配置parms传入JVM arg,如下所示: -DRunningTestsOnly=true

    • 代码: if ("true".equals(System.getProperty("RunningTestsOnly")))

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

    • 传入JVM arg: -DexecuteQuickRunningTestsOnly=true

    • 如果属性集I放在方法的顶部,则忽略缓慢运行的测试方法: assumeThat(System.getProperty("executeQuickRunningTestsOnly", "false"), is("false"));

  • 1

    只是一个想法:您可以创建一个Exception,然后遍历异常的堆栈跟踪,看看那些是来自junit包的类 .

相关问题