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

Dr.*_*kel 6 java google-app-engine junit jersey embedded-jetty

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

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

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

作为一种解决方法,我只将GAE本地环境初始化一次,将其置于静态变量中,并在GAE资源内部添加许多检查(此线程没有开发环境?重新使用静态环境变量).而这些检查当然应该只内JUnit测试运行..(我问过:"我怎么可以找出代码是JUnit测试中运行或不" -我不能直接在这里发布的链接: - |)

小智 5

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

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

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

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