并行执行测试

Pen*_*gin 26 scala sbt specs2

我注意到SBT正在并行运行我的specs2测试.这似乎很好,除了我的一个测试涉及从文件读取和写入因此无法预测失败,例如见下文.

有没有更好的选择

  1. 将所有测试设置为串行运行,
  2. 为每个测试使用单独的文件名和拆卸?
class WriteAndReadSpec extends Specification{
  val file = new File("testFiles/tmp.txt")

  "WriteAndRead" should {
    "work once" in {
      new FileWriter(file, false).append("Foo").close
      Source.fromFile(file).getLines().toList(0) must_== "Foo"
    }
    "work twice" in {
      new FileWriter(file, false).append("Bar").close
      Source.fromFile(file).getLines().toList(0) must_== "Bar"
    }
  }

  trait TearDown extends After {
    def after = if(file.exists) file.delete
  }
}
Run Code Online (Sandbox Code Playgroud)

Eri*_*ric 36

除了上面有关sbt的内容之外,您必须知道specs2默认同时运行您的规范的所有示例.

您仍然可以声明,对于给定的规范,示例必须按顺序执行.为此,您只需添加sequential到规范的开头:

class WriteAndReadSpec extends Specification{
  val file = new File("testFiles/tmp.txt")

  sequential

  "WriteAndRead" should {
   ...
  }
}
Run Code Online (Sandbox Code Playgroud)