SBT - 如何使InputTask依赖于一个任务而doFinally另一个任务

时间:2014-09-17 14:32:40

标签: sbt

我们正在为一些自动Android UI测试整合SBT Build。目的是启动Appium服务器,启动Android模拟器,运行测试,然后关闭所有内容。我们已经将这项工作用于测试' SBT命令:

(test in Test) <<= 
  (stopVirtual, (test in Test), saveProcessVirtualKey)
  {
    (stop, test, saveProcessVirtualKey) => test.dependsOn(saveProcessVirtualKey).doFinally(stop)
  }

我们在尝试使用&#39; testOnly&#39;进行相同操作时遇到了问题。命令,应该接受一个字符串参数来指定要运行的特定测试。到目前为止我们得到的是:

(testOnly in Test) <<=
  (stopVirtual, (testOnly in Test), saveProcessVirtualKey)
  {
    (stop, test, saveProcessVirtualKey) => test.dependsOn(saveProcessVirtualKey).doFinally(stop)
  }

我们真的需要让一个InputTask依赖于saveProcessVirtualKey和doFinally stopVirtual。这可能吗?

1 个答案:

答案 0 :(得分:0)

sbt内置test setup and cleanup

  

使用Tests.SetupTests.Cleanup指定设置和清除操作。它们接受类型为() => Unit的函数或类型为ClassLoader => Unit的函数。接受ClassLoader的变量将传递给(或曾经)用于运行测试的类加载器。它提供对测试类以及测试框架类的访问。

Test / testOptions += Tests.Setup( () => println("Setup") )
Test / testOptions += Tests.Cleanup( () => println("Cleanup") )

那行得通吗?

我第二次发布此信息,因为主持人删除了我以前的答案。