如果在下面进行了spock测试,则setup
块将为where
块中的每个数据元素运行一次。我可以让它只运行一次吗?仅运行测试设置一次
setup:
def x = 1
when:
x++
then:
x == y
where:
y << [2, 3, 4]
如果在下面进行了spock测试,则setup
块将为where
块中的每个数据元素运行一次。我可以让它只运行一次吗?仅运行测试设置一次
setup:
def x = 1
when:
x++
then:
x == y
where:
y << [2, 3, 4]
只需使用@Shared注释,并宣布X作为类字段。该值将在要素方法执行之间(多个要素方法之间)重用。
class SomeSpockSpec extends Specification {
@Shared def x = 1
def 'x going to be incremented'() {
when:
x++
then:
x == y
where:
y << [2, 3, 4]
}
}
如果初始化共享变量需要比简单赋值语句更多的代码,则可以创建setupSpec()方法。在规范运行的任何测试之前,这将被执行一次。 –
@AlexBlakemore是对的。而且,__setupSpec()__方法适用于标注为__ @ Shared__的字段。 – topr
在单独的'def setup(){}中初始化'x' //在每个要素方法的方法之前运行吗? –
@tim_yates它没有。当使用_where_块时,每个y值的每次运行都将作为单独的特征方法执行。因此x也将被重新初始化。 – topr