我注意到SBT正在並行運行我的specs2測試。這看起來不錯,除了我的一個測試涉及從文件讀取和寫入並因此不可預測地失敗,例如,見下文。並行執行測試
有什麼比
- 更好的選擇,設置所有的測試以串行運行,
- 使用每個測試單獨的文件名和撕裂起伏?
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
}
}
這是拼圖的缺失部分。事實上,即使沒有自定義Build.scala建議的其他答案,它也可以工作。我猜SBT並行性是跨越單獨的測試文件而不是單個文件。 – Pengin
是的,sbt在測試之間控制這個,sequential是在測試用例中正確使用的。保持接近測試規格更有意義,因爲那樣會隱含記錄。 –