2014-12-12 10 views
5

Używam sbt i JUnit do uruchamiania testów dla dużego projektu Scala. Jestem forking multiple JVMs do testów i określenie, jak testy powinny być zgrupowane w JVM przy użyciu testGrouping in Test.Jak mogę uruchomić testy równolegle, ale uzyskać starannie uporządkowane wyniki testu?

Testy działają równolegle, ale ich wyniki są przeplatane, przez co trudno je odczytać. Ustawiłem logBuffered in Test := true, ale to chyba nic nie robi.

Oto urywek z mojego settings:

parallelExecution in Test := true, 
testForkedParallel in Test := false, 
concurrentRestrictions in Global := Seq(Tags.limit(Tags.ForkedTestGroup, 8)), 

testGrouping in Test := (definedTests in Test, javaOptions in Test) map groupBySuite, 
testGrouping in Test := { 
    val original: Seq[Tests.Group] = (testGrouping in Test).value 

    original.map { group => 
    val forkOptions = ForkOptions(
     bootJars = Nil, 
     javaHome = javaHome.value, 
     connectInput = connectInput.value, 
     outputStrategy = outputStrategy.value, 
     runJVMOptions = (javaOptions in Test).value, 
     workingDirectory = Some(baseDirectory.value), 
     envVars = envVars.value 
    ) 

    group.copy(runPolicy = Tests.SubProcess(forkOptions)) 
    } 
}, 
logBuffered in Test := true, 

Jak mogę trzymać moje testy uruchomiony równolegle, ale mają wyjście jakoś być buforowane i wyświetlane w kolejności tak, że jest czytelny? Czy jest jakieś ustawienie, które muszę podać do outputStrategy w rozwidlonych opcjach JVM?

Istnieje a similar question here, ale staram się, aby moje testy działały równolegle.

Odpowiedz

-1

Zobacz http://www.scala-sbt.org/1.x/docs/Parallel-Execution.html

parallelExecution in Test kontrole czy testy są przypisane do poszczególnych zadań. Aby ograniczyć liczbę równoczesnych wykonań testów we wszystkich projektach, należy użyć:

concurrentRestrictions in Global += Tags.limit(Tags.Test, 1) 
Powiązane problemy