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

Jon*_*nHW 13 sbt

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

(test in Test) <<= 
  (stopVirtual, (test in Test), saveProcessVirtualKey)
  {
    (stop, test, saveProcessVirtualKey) => test.dependsOn(saveProcessVirtualKey).doFinally(stop)
  }
Run Code Online (Sandbox Code Playgroud)

尝试使用'testOnly'命令执行相同操作时遇到问题,该命令应该采用字符串参数来指定要运行的特定测试.到目前为止我们得到的是:

(testOnly in Test) <<=
  (stopVirtual, (testOnly in Test), saveProcessVirtualKey)
  {
    (stop, test, saveProcessVirtualKey) => test.dependsOn(saveProcessVirtualKey).doFinally(stop)
  }
Run Code Online (Sandbox Code Playgroud)

我们真的需要使InputTask依赖于saveProcessVirtualKey和doFinally stopVirtual.这可能吗?

Eug*_*ota 1

sbt 有内置的测试设置和清理。

Tests.Setup使用和指定设置和清理操作Tests.Cleanup。它们接受 type 的函数() => Unit或 type 的函数ClassLoader => Unit。接受类加载器的变体被传递给用于运行测试的类加载器。它提供对测试类以及测试框架类的访问。

Test / testOptions += Tests.Setup( () => println("Setup") )
Test / testOptions += Tests.Cleanup( () => println("Cleanup") )
Run Code Online (Sandbox Code Playgroud)

那行得通吗?

这是我第二次发帖,因为我之前的回答被版主删除了。