重写的spock测试方法仍在运行

时间:2014-04-09 18:16:09

标签: unit-testing groovy spock

我有一系列从基类扩展的类。我已经为类编写了spock测试类,其中有一个测试正常功能的基本测试类,但在少数类的情况下,标准测试逻辑不起作用。

我的计划是在需要时简单地覆盖基本测试方法,但似乎spock仍在运行它们。

示例:

基础测试:

def "testing name"() {
     expect:
     assert STANDARD CODE HERE
}

子类测试:

def "testing name"() {
     expect:
     assert CUSTOM CODE HERE
}

但是当我运行测试时,基本测试的方法仍在运行并失败。

2 个答案:

答案 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
    }
}

丑陋,但确实有效。