如何叉在SBT每个测试的JVM(How to fork the jvm for each test

2019-08-19 08:22发布

我与(出于某种原因)只能使用一次,单个VM中使用的一些类的工作。 (如果我单独运行他们我的测试情况下工作fork := true )在我的启用sbt设置。

如果我运行这些测试的不止一个,他们无法与具有同一个线程执行拒绝一个任务(这很可能是封闭的)异常。 这将是非常耗时,找出是什么原因导致的问题,即使我发现这个问题,我可能没有能够解决它(我没有访问源代码)。

我目前使用的specs2测试框架,但使用任何测试框架sbt是可以接受的。

是否有任何测试框架sbt是能够在运行的每个测试的jvm叉?

可能的其他解决方案的想法或观念当然欢迎。

Answer 1:

原来,这是很容易实现的。 该文件是充分的,可以在这里找到测试-测试分叉

// Define a method to group tests, in my case a single test per group
def singleTests(tests: Seq[TestDefinition]) =
  tests map { test =>
    new Group(
      name = test.name,
      tests = Seq(test),
      runPolicy = SubProcess(javaOptions = Seq.empty[String]))
  }

// Add the following to the `Project` settings
testGrouping in Test <<= definedTests in Test map singleTests


Answer 2:

使用非过时的语法:

testGrouping in Test := (definedTests in Test).value map { test =>
  Tests.Group(name = test.name, tests = Seq(test), runPolicy = Tests.SubProcess(
    ForkOptions(
      javaHome.value,
      outputStrategy.value,
      Nil,
      Some(baseDirectory.value),
      javaOptions.value,
      connectInput.value,
      envVars.value
    )))
}


文章来源: How to fork the jvm for each test in sbt
标签: scala sbt