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

标签 unit-testing groovy spock

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

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

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

看起来使它成为静态可能有效,但是我想要一些方法来接触类的 @shared 变量,所以我不确定静态是最好的选择。

最佳答案

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

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

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

很明显,特征方法没有被执行。

关于unit-testing - 在 spock 测试中创建不会作为测试运行的辅助方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37076581/

相关文章:

unit-testing - 使用 Fixtures 加载后删除 fixtures

java - 在没有 maven 的情况下将 spock 添加到 eclipse : General error during semantic analysis

java - Micronaut:在 Spock 中模拟工厂创建的 Bean

unit-testing - 禁用 grails 命令对象中的验证约束以进行单元测试(使用 Spock)

objective-c - 为什么当我测试一个方法抛出异常并且该方法抛出异常时,测试会停止?

javascript - 在 Jasmine 中 mock Angular $元素

unit-testing - 在同一JUnit测试中同时使用Arquillian和PowerMock

grails - artifact.clazz和bean.class之间的区别

json - 在 Groovy 中获取 JSON 键的名称

groovy - 在 groovy [].sum() 中,当我期望 0 时返回 null