SBT - 如何使 InputTask 依赖于一个任务并最终完成另一个
Posted
技术标签:
【中文标题】SBT - 如何使 InputTask 依赖于一个任务并最终完成另一个【英文标题】:SBT - how to make an InputTask depend on one task and doFinally another 【发布时间】:2014-11-11 15:48:57 【问题描述】:我们正在为一些自动化的 android UI 测试整合一个 SBT 版本。目的是启动 Appium 服务器,启动 Android 模拟器,运行测试,然后关闭一切。我们已经为“测试”SBT 命令提供了这个功能:
(test in Test) <<=
(stopVirtual, (test in Test), saveProcessVirtualKey)
(stop, test, saveProcessVirtualKey) => test.dependsOn(saveProcessVirtualKey).doFinally(stop)
我们在尝试使用“testOnly”命令执行相同操作时遇到了问题,该命令应该接受一个字符串参数来指定要运行的特定测试。到目前为止,我们得到的是:
(testOnly in Test) <<=
(stopVirtual, (testOnly in Test), saveProcessVirtualKey)
(stop, test, saveProcessVirtualKey) => test.dependsOn(saveProcessVirtualKey).doFinally(stop)
真的,我们需要让 InputTask 依赖于 saveProcessVirtualKey 和 doFinally stopVirtual。这可能吗?
【问题讨论】:
【参考方案1】:sbt 内置了test setup and cleanup。
使用
Tests.Setup
和Tests.Cleanup
指定设置和清理操作。它们接受() => Unit
类型的函数或ClassLoader => Unit
类型的函数。接受 ClassLoader 的变体被传递给(或曾经)用于运行测试的类加载器。它提供对测试类以及测试框架类的访问。
Test / testOptions += Tests.Setup( () => println("Setup") )
Test / testOptions += Tests.Cleanup( () => println("Cleanup") )
这行得通吗?
我第二次发这个帖子,因为我之前的回答被版主删除了。
【讨论】:
以上是关于SBT - 如何使 InputTask 依赖于一个任务并最终完成另一个的主要内容,如果未能解决你的问题,请参考以下文章