मैं ग्रोवी-2.0 के लिए स्पॉक का उपयोग करके इकाई परीक्षण लिख रहा हूं, और चलाने के लिए ग्रेडल का उपयोग कर रहा हूं। यदि मैं परीक्षा पास के बाद लिखता हूं।यूनिट परीक्षण ग्रोवी 2.0 स्पॉक के साथ: सेटअप()
import spock.lang.Specification
class MyTest extends Specification {
def "test if myMethod returns true"() {
expect:
Result == true;
where:
Result = new DSLValidator().myMethod()
}
}
MyMethod() DSLValidator कक्षा में एक सरल विधि, कि बस सच रिटर्न है।
लेकिन अगर मैं एक सेटअप() फ़ंक्शन लिख सकते हैं और सेटअप में वस्तु() बनाने के लिए, अपने परीक्षण में विफल रहता है: Gradel का कहना है: विफल: java.lang.NullPointerException: अशक्त वस्तु पर विधि MyMethod() आह्वान नहीं किया जा सकता
सेटअप(),
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()
}
}
अजीब ... स्पॉक दस्तावेज़ वास्तव में इस पर स्पष्टीकरण के साथ कर सकते हैं ... मैं नहीं कहूंगा कि ओबीजे सुविधा विधियों के बीच साझा किया जा रहा है, लेकिन प्रत्येक स्थिरता के पहले इसे स्थापित किया जा रहा है ... –
क्या यह है कि आप समझ में नहीं आता है? एक @ शेर फ़ील्ड _is_ सुविधा विधियों के बीच साझा किया गया है और इसे फ़ील्ड प्रारंभकर्ता या 'setupSpec' विधि के साथ स्थापित किया जाना चाहिए। 'सेटअप' यहां एक अच्छी पसंद नहीं है क्योंकि इसे' कहां 'ब्लॉक के मूल्यांकन के बाद बुलाया जाता है। –
स्पष्टीकरण के लिए धन्यवाद –