如果在下面進行了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