TLDR;在混合了 BeforeAndAfterAll
的 ScalaTest 规范中和 ParallelTestExecution
, 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()
应该清理夹具。我已经省略了夹具代码的细节,因为这个问题并不重要。这是我的测试的输出:
foo
afterAll
bar
afterAll
afterAll
所以
afterAll()
在每次测试后都被调用,然后在所有测试之后再次调用。我只想在所有测试后调用它。有谁知道为什么
afterAll()
是这样的吗?更新
如果我不混进去
ParallelTestExecution
,我的测试行为正常:foo
bar
afterAll
不幸的是,我实际上想要
ParallelTestExecution
.有什么办法可以让我的蛋糕也吃掉吗?
最佳答案
来自马口:https://stackoverflow.com/a/15731847/89509
基本上每个测试用例都会作为它自己的实例运行,每个实例都会调用 afterAll
一次。
关于ScalaTest afterAll() 在每次测试后被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21133201/