Java 谷歌AppEngine+;本地JUnit测试+;泽西框架&x2B;嵌入式码头

Java 谷歌AppEngine+;本地JUnit测试+;泽西框架&x2B;嵌入式码头,java,google-app-engine,junit,jersey,embedded-jetty,Java,Google App Engine,Junit,Jersey,Embedded Jetty,我使用googleappengineforjava(GAE/J)。 在上面,我使用了Jersey REST框架 现在我想运行本地JUnit测试。测试 设置本地GAE开发环境() 启动嵌入式Jetty服务器 然后通过HTTP向服务器发出请求并检查响应 不幸的是,Jersey/Jetty组合产生了新的线程。GAE只希望运行一个线程。 最后,我要么在Jersey资源中没有datstore,要么有多个不同的数据存储 作为一种解决方法,我只初始化了GAE本地环境一次,将其放入一个静态变量中,并在GAE

我使用googleappengineforjava(GAE/J)。 在上面,我使用了Jersey REST框架

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

  • 设置本地GAE开发环境()
  • 启动嵌入式Jetty服务器
  • 然后通过HTTP向服务器发出请求并检查响应
不幸的是,Jersey/Jetty组合产生了新的线程。GAE只希望运行一个线程。 最后,我要么在Jersey资源中没有datstore,要么有多个不同的数据存储


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

可能使用系统属性。。。 当它是Junit运行时,通过JVM参数设置Java系统属性,然后可以测试如下内容:

  • 测试时(可能在IDE等中)通过run-config参数传入JVM参数,如下所示:
    -DRunningTestsOnly=true
  • 在代码中:
    if(“true”).equals(System.getProperty(“RunningTestsOnly”))
我以前在JUnit测试中也做过类似的工作,使用假设忽略测试,我认为在动力不足的开发PC上运行太长时间

  • 传入JVM参数:
    -DexecuteQuickRunningTestsOnly=true
  • 如果我将属性集放在方法的顶部,则忽略运行缓慢的测试方法:
    假设(System.getProperty(“executeQuickRunningTestsOnly”、“false”)为(“false”)
    • 只是一个想法:
      您可以创建一个异常,然后在异常的堆栈跟踪中迭代,以查看是否有来自JUnit包的类。

      还考虑使用环境变量,在代码中通过例如“代码>字符串StrayLe= Stase.GETEnV(“Run-LealeLead”)访问代码;代码>。这种独立于语言的机制非常流行,它允许您的程序在不同的环境(开发、测试、集成、CI、生产等)中具有不同的配置参数。此外,如果您使用Gradle,它会在测试时自动设置属性
      org.Gradle.test.worker