2016-05-12 5 views
0

У меня есть проект с несколькими модулей и в настоящее время выполнения тестов в процессе упаковки на задаче, которая гласит -Выполнить один тестовый набор из build.sbt

val testALL = taskKey[Unit]("Test ALL Modules") 

testALL := { 
    (test in Test in module_A).value 
    (test in Test in module_B).value 
    (test in Test in module_C).value 
} 

Теперь я закрепил все испытания в каждом модуле в один комплект ScalaTest высшего уровня. Поэтому для каждого модуля нужно только запустить этот единственный пакет верхнего уровня (называемый say «blah.moduleA.TestSuite» и т. Д.). Попытались использовать testOnly и testFilter в моем build.sbt для запуска всего этого единственного пакета в каждом модуле, но не могли получить синтаксис правильно. Может кто-нибудь, пожалуйста, скажите мне, как это сделать?

ответ

1

testOnly является InputKey[Unit]. Вы хотите повернуть его в Task[Unit], чтобы иметь возможность запускать его непосредственно для данного набора тестов.

Вы можете достичь этого следующим образом:

lazy val foo = taskKey[Unit]("...") 
foo := (testOnly in Test).fullInput("hello").value 

В документации SBT по: Preapplying input in sbt

+0

Благодаря вашей реакции я понял, как использовать InputKey. Но по какой-то причине я еще не понимаю, fullInput не работает. И пытаясь найти, почему я нашел [this] (http://stackoverflow.com/questions/35863430/custom-sbt-task-to-run-tests-by-tag) Вопрос SO, который предложил использовать toTask() и тот отлично работал! – Bharadwaj

Смежные вопросы