【发布时间】:2014-02-03 16:08:53
【问题描述】:
TLDR;在混合了BeforeAndAfterAll 和ParallelTestExecution 的ScalaTest 规范中,afterAll() 在每次测试后被调用,然后在所有测试后再次调用。我只想要最终的行为。
我有一个这样的 ScalaTest 规范:
class TestSpec extends fixture.FunSpec with ShouldMatchers with BeforeAndAfter with BeforeAndAfterAll with ParallelTestExecution {
override def afterAll() = {
println("afterAll")
}
describe("something") {
it("should foo") {
println("foo")
}
it("should bar") {
println("bar")
}
}
}
两个测试想要共享一个fixture,那么afterAll()应该清理fixture。我省略了对这个问题无关紧要的夹具代码的细节。
这是我的测试的输出:
foo
afterAll
bar
afterAll
afterAll
所以每次测试后都会调用afterAll(),然后在所有测试后再次调用。我只希望在所有测试之后调用它。
有人知道为什么afterAll() 会这样吗?
更新
如果我不混入ParallelTestExecution,我的测试会正常运行:
foo
bar
afterAll
不幸的是,我实际上想要ParallelTestExecution。有什么办法可以让我的蛋糕也吃吗?
【问题讨论】: