2014-12-12 56 views
5

我正在使用sbt和JUnit來運行大型Scala項目的測試。我是forking multiple JVMs進行測試,並定義如何使用testGrouping in Test將測試分組到JVM中。如何並行運行測試,但得到整齊有序的測試輸出?

測試並行運行,但是它們的輸出相互交錯,因此很難通讀。我已經設置了logBuffered in Test := true,但這似乎沒有做任何事情。

下面是一個片段我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, 

我怎樣才能保持我的測試並行運行,但有輸出某種程度上被緩衝和顯示順序,使其可讀?是否可能需要在分叉的JVM選項中向outputStrategy提供一些設置?

a similar question here,但我期待讓我的測試並行運行。

回答