【发布时间】:2020-06-13 12:34:01
【问题描述】:
我的测试位于不同的类中,这些类从 BaseSpec 类扩展而来,而后者又从 Spock 框架的 Specification 类扩展。
class BaseSpec extends Specification {
def setupSpec() {
println('run setupSpec() from BaseSpec')
}
def cleanupSpec() {
println('run cleanupSpec() from BaseSpec')
}
}
class FirstTestClass extends BaseSpec {
def setup() {
println('run setup() from FirstTestClass')
}
def cleanup() {
println('run cleanup() from FirstTestClass')
}
def 'do test1'() {
given:
println('run "do test1" from FirstTestClass')
}
}
class SecondTestClass extends BaseSpec {
def setup() {
println('run setup() from SecondTestClass')
}
def cleanup() {
println('run cleanup() from SecondTestClass')
}
def 'do test2'() {
given:
println('run "do test2()" from SecondTestClass')
}
}
正如预期的那样,setupSpec() 和 cleanupSpec() 为每个可继承类执行。
run setupSpec() from BaseSpec
run setup() from FirstTestClass
run "do test1" from FirstTestClass
run cleanup() from FirstTestClass
run cleanupSpec() from BaseSpec
run setupSpec() from BaseSpec
run setup() from SecondTestClass
run "do test2()" from SecondTestClass
run cleanup() from SecondTestClass
run cleanupSpec() from BaseSpec
有没有办法只执行一次setupSpec() 和cleanupSpec()?或者我只能将所有特征方法放在一个类中?
谢谢!
【问题讨论】:
-
有趣。我能问一下你为什么想要吗?
-
但在回答你的问题时,我不相信你可以
-
是的,就在
setupSpec我想打开与服务器的连接。目前,在每个类的运行测试期间打开然后关闭连接看起来很奇怪。这是测试的历史结构。 -
我会警惕打开持续所有测试的连接。将其移至基类听起来很明智,然后必须使用相同连接的测试可以在相同规范中