2016-05-12 7 views
0

ich ein Multi-Modul-Projekt und zur Zeit Tests während des Verpackens von einer Task ausgeführt, die liest -aus einer einzigen Testsuite Run 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 
} 

Jetzt habe ich alle Tests in jedem Modul in eine konsolidierten einzelne Top-Level-ScalaTest-Suite. Also für jedes Modul nur diese Top-Level-Suite (genannt "blah.moduleA.TestSuite" usw.) laufen lassen. Habe versucht, testOnly und testFilter in meinem build.sbt zu verwenden, um nur diese einzelne Suite in jedem Modul auszuführen, aber die Syntax nicht richtig zu bekommen. Kann mir bitte jemand sagen, wie man das macht?

Antwort

1

testOnly ist ein InputKey[Unit]. Sie möchten es in eine Task[Unit] drehen, um es für eine bestimmte Testsuite direkt ausführen zu können.

Sie können diese auf diese Weise erreichen:

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

In sbt Dokumentation: Preapplying input in sbt

+0

Dank Ihrer Antwort, die ich verstanden, wie InputKey zu verwenden. Aber aus irgendeinem Grund verstehe ich noch nicht, fullInput hat nicht funktioniert. Und versuchen zu finden, warum ich [diese] (http://stackoverflow.com/questions/35863430/custom-sbt-task-to-run-tests-by-tag) SO Frage gefunden habe, die die Verwendung von toTask() and that vorgeschlagen hat perfekt funktioniert! – Bharadwaj

Verwandte Themen