2014-12-12 13 views
5

Tôi đang sử dụng sbt và JUnit để chạy thử nghiệm cho một dự án Scala lớn. Tôi là forking multiple JVMs để kiểm tra và xác định cách thử nghiệm nên được nhóm trong các JVM bằng cách sử dụng testGrouping in Test.Làm cách nào để chạy thử nghiệm song song nhưng có được kết quả thử nghiệm được sắp xếp gọn gàng?

Các thử nghiệm đang chạy song song, nhưng đầu ra của chúng bị đan xen, khiến cho khó đọc qua. Tôi đã thiết lập logBuffered in Test := true, nhưng điều đó dường như không làm bất cứ điều gì.

Dưới đây là một đoạn trích từ tôi 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, 

Làm thế nào tôi có thể giữ các bài kiểm tra của tôi chạy song song, nhưng có đầu ra bằng cách nào đó được đệm và hiển thị theo thứ tự để nó có thể đọc được? Có lẽ một số cài đặt tôi cần phải cấp cho outputStrategy trong các tùy chọn JVM được chia đôi không?

a similar question here, nhưng tôi đang tìm cách giữ các thử nghiệm của mình chạy song song.

Trả lời

-1

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

parallelExecution in Test điều khiển cho dù các bài kiểm tra được ánh xạ tới nhiệm vụ riêng biệt. Để hạn chế số lượng đồng thời thực hiện kiểm tra trong tất cả các dự án, hãy sử dụng:

concurrentRestrictions in Global += Tags.limit(Tags.Test, 1) 
Các vấn đề liên quan