【发布时间】:2015-09-02 08:42:13
【问题描述】:
根据文档,fixture 可以像这样传递给测试:
def withFixture(test: OneArgTest) = {
val f = veryLengthyInitialization(test.configMap)
withFixture(test.toNoArgTest(f))
}
describe("Some test") {
it("should succeed") { f =>
f.doSomething()
// ...
}
// many other tests
// ...
}
问题是每次测试都要进行初始化,而且需要很长时间,所以我希望它只运行一次。文档提出了另一种选择:
override def beforeAll(configMap: ConfigMap) {
val fOnce = veryLengthyInitialization(configMap)
// but how do I pass f to the tests?
// ugly workaround:
f = fOnce
}
var f: InitType = null
describe("Some test") {
it("should succeed") { // hack: no parameter, use var instead
f.doSomething()
// ...
}
// many other tests
// ...
}
它有效,但我的理解是应该避免 null ,并且依赖突变来实现这样基本的东西有点愚蠢。编写此类测试的正确方法是什么?
【问题讨论】:
-
避免
null值的scalaesque方法是使用Option。 -
我不确定 Option 在这种特殊情况下会给我买什么?我的问题是如何重组代码以避免 var。
标签: scala unit-testing scalatest