在spock测试中创建不会作为测试运行的辅助方法

时间:2016-05-06 15:51:00

标签: unit-testing groovy spock

我是一名java开发人员,发现自己修改了一个groovy测试,所以如果我对基本的常规概念和术语一无所知(我想我应该在这里说闭合而不是方法,我道歉?)

无论如何,我的愿望很简单,我想创建一些可以在现有的groovy测试中重用的辅助方法。诸如启动/停止某些测试所需的资源(并且会破坏其他测试)或者更快地执行常见测试步骤之类的事情。

但是,似乎每当我尝试创建一个这样的方法(闭包?)时,它就会被spock作为测试运行,这会以有趣的方式打破其他测试。是否有一种简单的方法可以将方法添加到我的spock测试中而不将其作为测试运行?

看起来静态可能会起作用,但是我想要的方法会触及类的@shared变量,所以我不确定静态是最好的选择。

1 个答案:

答案 0 :(得分:7)

我一直在广泛使用特征来编写单元测试。

每个特征都将测试功能引入规范。

trait Helper {
    def helpTests() {
        println "Starting Test"
        return 2
    }
}

class MySpec extends Specification
        implements Helper {
    def "my spec"() {
        when:
        def n = helpTests()

        then:
        n == 2
    }
}

显然,特权方法没有被执行。