【发布时间】:2020-07-16 09:07:14
【问题描述】:
我想从 sbt 并行运行测试套件,但每个套件都有自己的专用 jvm。
(在我的项目中,每个 jvm 有一个资源,不能从不同的线程并行使用)
这是我的测试设置:
import java.lang.management.ManagementFactory
import org.scalatest.FunSuite
trait BaseTest extends FunSuite {
test("test1") {
println(f"process_id: ${ManagementFactory.getRuntimeMXBean.getName} - thread_id: ${Thread.currentThread.getId}")
Thread.sleep(5000)
}
}
class Test1 extends BaseTest
class Test2 extends BaseTest
class Test3 extends BaseTest
这些是我在 sbt 中尝试过的设置:
logBuffered in Test := false //make the logs nicer
parallelExecution in Test := true
fork in Test := true
testForkedParallel in Test := true
concurrentRestrictions in Global := Seq(Tags.limit(Tags.ForkedTestGroup, 4), Tags.limit(Tags.Test, 4))
这是我运行测试时打印的内容:
process_id: 16676@host - thread_id: 13
process_id: 16676@host - thread_id: 14
process_id: 16676@host - thread_id: 12
测试在不同的线程中运行,但都在同一个进程中。
我有办法让每个套件都有自己的 jvm?
【问题讨论】: