12

我正在使用一些类(出于某种原因)只能在单个 VM 中使用一次。如果我在我的设置中fork := true启用单独运行它们(),我的测试用例就可以工作。sbt

如果我运行多个这些测试,它们会失败并出现异常,线程执行器拒绝任务(它很可能已关闭)。找出导致问题的原因将非常耗时,即使我找到了问题,我也可能无法解决它(我无权访问源代码)。

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

是否有任何测试框架sbt能够在jvmfork 中运行每个测试?

当然,欢迎对可能的其他解决方案提出想法或想法。

4

2 回答 2

9

事实证明,这很容易实现。文档就足够了,可以在测试 - 分叉测试中找到

// 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
于 2013-04-03T21:38:58.823 回答
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
    )))
}
于 2017-01-02T05:41:40.907 回答