如何在sbt中为每个测试分叉jvm

时间:2013-04-03 21:19:30

标签: scala sbt

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

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

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

sbt是否有能够在jvm分叉中运行每项测试的测试框架?

关于可能的其他解决方案的想法或想法当然是受欢迎的。

2 个答案:

答案 0 :(得分:9)

事实证明这很容易实现。文档已经足够,可以在Testing - Forking tests

找到
// 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

答案 1 :(得分:1)

使用不推荐使用的语法:

placeholder