SBT - как сделать InputTask зависеть от одной задачи и doFinally другой
Мы собираем SBT Build для некоторых автоматизированных тестов Android UI. Цель состоит в том, чтобы запустить сервер Appium, запустить эмулятор Android, запустить тесты, а затем закрыть все. У нас это работает для команды "test" 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 имеет встроенную тестовую настройку и очистку.
Укажите действия по настройке и очистке, используя Tests.Setup
и Tests.Cleanup
. Они принимают либо функцию типа () => Unit
либо функцию типа ClassLoader => Unit
. Вариант, который принимает ClassLoader, передается загрузчику классов, который (или был) используется для запуска тестов. Он обеспечивает доступ к тестовым классам, а также к классам каркасных тестов.
Test / testOptions += Tests.Setup( () => println("Setup") )
Test / testOptions += Tests.Cleanup( () => println("Cleanup") )
Будет ли это работать?
Я публикую это во второй раз, потому что мой предыдущий ответ был удален модератором.