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

EEC*_*LOR 11 scala sbt

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

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

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

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

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

EEC*_*LOR 9

事实证明这很容易实现.文档已经足够,可以在Testing - Forking测试中找到

// 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
Run Code Online (Sandbox Code Playgroud)

  • 啊,看起来在我的sbt版本中你需要在Test << ....中做`testGrouping (2认同)