2016-05-06 73 views
4

我是一名java开发人员,发现自己正在修改一个常规测试,所以我很抱歉如果我对基本的常规概念和术语很不了解(我认为我应该在这里说的是封闭而不是方法?)在spock测试中创建助手方法,将不会作为测试运行

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

但是,似乎任何时候我尝试创建一个像这样的方法(闭包?),它会被spock作为测试运行,从而以有趣的方式打破其他测试。有没有简单的方法来添加一个方法到我的Spock测试,而不是作为一个测试运行?

它看起来像使它静态可能工作,但有我想要的方法会触及类的@shared变量,所以我不知道静态是最好的选择。

+1

如何得到你有什么样的工作例子,你想要什么,为什么它不工作? –

+2

私有方法不会作为测试执行。 – cjstehno

回答

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

显然,特征方法不会被执行。