如何针对Google App Engine应用

时间:2016-05-31 15:01:06

标签: google-app-engine gradle nightwatch.js

一位朋友今天向我指出了nightwatchjs(http://nightwatchjs.org/),我希望有一个游戏,看看使用我们的Google App Engine应用程序是多么容易。

我尝试创建一个调用nightwatch命令的gradle任务,但首先通过调用appengineRun命令来确保正在运行appengine。

目前,任务看起来像这样:

task nightwatch(){
    tasks.appengineDownloadSdk.execute();
    tasks.compileJava.execute();
    tasks.processResources.execute();
    tasks.classes.execute();
    tasks.appengineEnhance.execute();
    tasks.war.execute();
    tasks.appengineExplodeApp.execute();
    tasks.appengineRun.execute();
    exec {
        executable "bash"
        args "-c","nightwatch src/functionalTest/nightwatch/nightwatch.js"
    }
    tasks.appengineStop.execute();
}

我的第一个想法是:必须有一个更简单的方法!?!?

所以,我的问题实际上是这样的:

  1. 此任务似乎正常,但它在appengineRun处停止,因为它没有在守护程序模式下运行。我该怎么做才能做到这一点?
  2. 如果这实际上不是最好的方法,那么是什么?
  3. 如果这不起作用,我会回到JUnit测试中使用Selenium。对于那些感兴趣的人:我不需要使用Selenium / JUnit跳过相同的箍,因为appengineFunctionalTest gradle任务确保dev应用程序已经在运行。

    感谢人们提供的任何帮助!

1 个答案:

答案 0 :(得分:0)

我猜您只需要在 appengineRun之后运行吗?你只需要添加dependsOn: appengineRun

此外,{grager}内部task内的所有命令都会在gradle读取脚本时执行,而不是在执行taks时执行。这是一个配置块。您需要在那里使用doLast {}来设置应该执行的代码。

试试这个:

appengine {
    daemon = false
}

task appengineDaemon() {
  doLast {
    appengine {
       daemon = true
    }
  }
}
appengineRun.mustRunAfter(appengineDaemon)

task nightwatch(dependsOn: [appengineRun, appengineDaemon]) {
  doLast {
    exec {
        executable "bash"
        args "-c","nightwatch src/functionalTest/nightwatch/nightwatch.js"
    }
  }
}