我有一系列从基类扩展的类。我已经为类编写了spock测试类,其中有一个测试正常功能的基本测试类,但在少数类的情况下,标准测试逻辑不起作用。
我的计划是在需要时简单地覆盖基本测试方法,但似乎spock仍在运行它们。
示例:
基础测试:
def "testing name"() {
expect:
assert STANDARD CODE HERE
}
子类测试:
def "testing name"() {
expect:
assert CUSTOM CODE HERE
}
但是当我运行测试时,基本测试的方法仍在运行并失败。
答案 0 :(得分:6)
从Spock 0.7开始,不支持在子类中重写测试方法,并且您必须找到一种不同的方法来构建测试。例如,您可以使用模板方法模式,其中基类中的测试方法调用一些抽象或具体的辅助方法,然后在子类中实现或覆盖这些方法。
答案 1 :(得分:3)
您可以在条件允许的情况下提早返回原始功能:
class BaseSpec extends Specification
@Shared
def ignored = [:] {
def myTest(){
if (ignored['myTest']) return
...
}
}
派生类可以在setupSpec中设置ignore:
class DerivedSpec extends BaseSpec
def setupSpec() {
ignored['myTest'] = true
}
def myTest(){
//override
}
}
丑陋,但确实有效。