Groovy 在测试名称中添加方法调用,并使用Spock展开

Groovy 在测试名称中添加方法调用,并使用Spock展开,groovy,spock,unroll,Groovy,Spock,Unroll,我有一个代码,我想把方法调用值放在方法的名称中 @Unroll def 'check #file other text'() { setup: def file = allProperties.keySet().getAt(0) ... where: ... 现在,我创建了一个特殊的变量,它只用于命名方法。我可以做一些类似于: static def allProper

我有一个代码,我想把方法调用值放在方法的名称中

        @Unroll
        def 'check #file other text'() {
        setup:
        def file = allProperties.keySet().getAt(0)
        ...
        where:
        ...
现在,我创建了一个特殊的变量,它只用于命名方法。我可以做一些类似于:

        static def allProperties
        def setupSpec(){
           allProperties== [1: 'asd', 2: 'ddd']
        }
        @Unroll
        def 'check #allProperties.keySet().getAt(0) other text'() {
        ....
        where:
        ...

已编辑:添加setupSpec()

Unroll
支持属性访问或零参数方法。因此,您可以:

@Unroll
def "check #allProperties.keySet().first() other text"() { .. }

提供的
allProperties
是一个类级变量或
@共享的
变量,或在
中提到,其中:
块。

用实际测试不影响的东西命名测试有什么好处?如果这个测试后来对我抛出“check lerl other text”(检查lerl other text),我会认为,lerl以某种方式影响了测试,并且它是
的一部分,因此展开的原因。如果我将它放在“展开”中,则数据表中所有位置的文件值都必须相同。是的,它是静态的,我尝试了您所说的,但结果是:“…错误:#allProperties.keySet().first…”但我在setupSpec()中初始化了它这就是问题所在吗?你能创建一个简单的规范脚本来复制这个问题吗?我可以研究一下。你必须使用
@Shared allProperties
来代替。使用
@Shared
可以工作,但是共享和静态有什么区别呢?@共享变量可以在
中使用,其中:
类似于静态。但是我现在再次看到了y您正在
setupSpec
中使用断言而不是实例化。
allProperties==[1:'asd',2:'ddd']
。能否将其更改为
allProperties=[1:'asd',2:'ddd']
并使用静态而不是
@Shared