8
我正在使用Spock爲groovy-2.0編寫單元測試,並使用gradle來運行。如果我在測試通過後寫下。使用Spock進行單元測試Groovy2.0:setup()
import spock.lang.Specification
class MyTest extends Specification {
def "test if myMethod returns true"() {
expect:
Result == true;
where:
Result = new DSLValidator().myMethod()
}
}
myMethod()是DSLValidator類中的一個簡單方法,它只是返回true。
但是,如果我寫的設置()函數創建設置()的對象,我的測試失敗:格拉德爾說:失敗:顯示java.lang.NullPointerException:不能爲null對象上調用方法myMethod的()
以下是它看起來像setup(),
import spock.lang.Specification
class MyTest extends Specification {
def obj
def setup(){
obj = new DSLValidator()
}
def "test if myMethod returns true"() {
expect:
Result == true;
where:
Result = obj.myMethod()
}
}
有人可以幫忙嗎?
這裏是我的問題的解決方案:
import spock.lang.Specification
class DSLValidatorTest extends Specification {
def validator
def setup() {
validator = new DSLValidator()
}
def "test if DSL is valid"() {
expect:
true == validator.isValid()
}
}
奇怪...... Spock文檔可能會對此做出澄清......我不會說obj是在特徵方法之間共享的,而是在每個fixture被調用之前設置的。 – 2012-01-31 21:18:06
你不明白的是什麼?要素方法之間共享@Shared字段_is_,並且應該使用字段初始值設定項或'setupSpec'方法進行設置。 'setup'在這裏不是一個好的選擇,因爲在'where'塊被評估之後它會被調用。 – 2012-02-01 15:25:09
感謝您的澄清 – 2012-02-01 16:47:04