String 如何在Spock框架的feature method name中添加数字

String 如何在Spock框架的feature method name中添加数字,string,spock,String,Spock,我想在Spock框架的feature methods名称中添加序列号。我该怎么做 下面给出一段代码片段以供澄清: class Test extends Specification { static def count = 0; def setup() { count++ } def '${count} This is first scenario'() { ... } def '${count} This i

我想在Spock框架的feature methods名称中添加序列号。我该怎么做

下面给出一段代码片段以供澄清:

class Test extends Specification {

    static def count = 0;

    def setup() {
        count++
    }

    def '${count} This is first scenario'() {
        ...
    }

    def '${count} This is second scenario'() {
        ...
    }

}
运行此代码后,将在报告中显示:

${count}这是第一种情况

${count}这是第二种情况

但我期待着:

1这是第一种情况

2这是第二种情况

这是不可能的

def'${count}中,这是第一个场景'()
您正在声明一个方法。无法动态生成方法名称

您可以使用数据驱动测试和
@Unroll
将测试参数注入到方法名称中的模板中,但我认为这不是您需要的

文档中的一个示例:

@Unroll
def "maximum of #a and #b is #c"() { 
 expect:
    Math.max(a, b) == c

    where:
    a | b || c
    3 | 5 || 5
    7 | 0 || 7
    0 | 0 || 0
}
这应该起作用:

@Unroll
def "foo #iterationCount" { ... }

使用带有计数和删除静态修饰符的@Share Anotion

通过使用@Shared注释,您可以向Spock指示希望在所有测试方法中存活的对象


是的,注入参数不是我想要做的。谢谢你的回答。迭代计数必须出现在where块中,不是吗?不,它是一个内置变量。我是在setup方法中增加这个内置变量,还是自动增加?误解了你的问题#iterationCount用于数据驱动测试(示例:)。你要求的功能不存在;也许Spock扩展可以处理这个问题(不确定)。如果您在答案中添加一些代码会更好。