जब मैं स्पॉक परीक्षण विफल रहता हूं तो मैं कुछ क्रिया निष्पादित करना चाहता हूं। विशेष रूप से, एक स्क्रीनशॉट लें। क्या यह संभव है? यह कैसे करना है?स्पॉक परीक्षण विफल होने पर कुछ क्रियाएं निष्पादित करें
उत्तर
एक श्रोता वर्ग
class ExampleListener extends AbstractRunListener {
def void error(ErrorInfo error) {
println "Actual on error logic"
}
}
बनाएं तो है कि प्रत्येक युक्ति
class GlobalSpecExtension implements IGlobalExtension {
@Override
void visitSpec(SpecInfo specInfo) {
specInfo.addListener(new ExampleListener())
}
}
के लिए मार डाला है
IGlobalExtension
के कार्यान्वयन का उपयोग कर प्रत्येक विनिर्देश में जोड़ने
और आखिरकार में org.spockframework.runtime.extension.IGlobalExtension
नामक फ़ाइल बनाएं (आमतौर पर यह src/test/resources
के तहत होगा यदि आप मेवेन का उपयोग कर रहे हैं) अपने IGlobalExtension
कार्यान्वयन के पूर्ण नाम के साथ
com.example.tests.GlobalSpecExtension
इसे प्राप्त करने का सबसे अच्छा तरीका एक (वैश्विक या एनोटेशन-संचालित) स्पॉक एक्सटेंशन लिखना है जो AbstractRunListener
लागू करता है और पंजीकृत करता है। उदाहरण के लिए, OptimizeRunOrderExtension देखें। वैश्विक एक्सटेंशन को पंजीकृत करने के लिए, IGlobalExtension वर्णनकर्ता देखें।
एक्सटेंशन पर अधिक दस्तावेज़ीकरण नहीं है क्योंकि एपीआई अभी भी परिवर्तन के अधीन हैं। यदि आप इसे सुरक्षित करना चाहते हैं (और कुछ प्रतिबंधों के साथ रह सकते हैं), तो आप इसके बजाय JUnit Rule लागू कर सकते हैं।
एक समस्या जो आप दोनों मामलों में सामना कर सकते हैं वह यह है कि वे वर्तमान spec उदाहरण तक पहुंच प्रदान नहीं करते हैं। यदि आपको इसकी आवश्यकता है, तो आपको एक ही एक्सटेंशन द्वारा पंजीकृत दोनों AbstractRunListener
(विफलता के अधिसूचित होने के लिए) और IMethodInterceptor
(स्पेक इंस्टेंस को पकड़ने के लिए) दोनों का उपयोग करना पड़ सकता है। (यह मुश्किल नहीं होना चाहिए, लेकिन यह है कि क्या वर्तमान में वहाँ है।)
हाय पीटर! अमान्य करने के लिए और शायद टूटे हुए ड्राइवर उदाहरण को फिर से बनाने के लिए मैं इन दोनों को कैसे जोड़ूं? क्लाउड टेस्ट में यदि मुझे 'वेबड्राइवर अपवाद: सत्र [...] जैसे कुछ प्राप्त होता है तो TIMEOUT के कारण समाप्त कर दिया गया था, मैं श्रोता में त्रुटि को रोक और लॉग कर सकता हूं, लेकिन' ड्राइवर 'या ड्राइवर फैक्ट्री तक पहुंच नहीं है जिसे मैं अमान्य कर सकता हूं। कोई विचार? – kriegaex
मैं इसे इस तरह से करने के लिए प्रबंधित किया है:
class ExampleTest extends GebSpec{
static boolean success = false
def setup(){
success = false
}
def cleanup(){
assert success == true, someAction()
}
def someAction(){
}
def "TestCase"(){
expect:
/*What you expect here*/
(success = true) != null
}
}
से पहले प्रत्येक परीक्षण का मामला "सफलता" सेटअप() विधि द्वारा गलत पर सेट है। प्रत्येक परीक्षण मामले के अंत में आप "(सफलता = सत्य)! = शून्य" कथन जोड़ते हैं। इसलिए "सफलता" केवल तभी सच होगी जब परीक्षण मामला पारित हो गया हो। प्रत्येक परीक्षण मामले के बाद क्लीनअप() विधि सत्यापित करेगी कि "सफलता" सत्य है या नहीं। यदि यह विधि नहीं है तो कुछ क्रिया() को बुलाया जाएगा।
मैं उपयोगकर्ता 3074543 के उत्तर पर उत्थान या टिप्पणी नहीं कर सकता, लेकिन यह एक एक्सटेंशन बनाने से आसान है। मुझे आसान चाहिए तो मैंने उपयोगकर्ता को छोटा कर दिया है (मेरा मतलब 1-लाइन विधियों का नहीं है)। आप सफलता की बजाय विफलता रिकॉर्डिंग करके तर्क को सरल बना सकते हैं, और एक() सहायक के साथ टाइपिंग को कम कर सकते हैं।
class Test extends spock.lang.Specification {
def fail
def setup(){ fail = true }
def done(){ !(fail = false) }
def cleanup(){ fail && doStuffWhenFail() }
def 'test things'(){
expect:
stuff
done()
}
}
- 1. परीक्षण विफल होने पर एंड्रॉइड जेनकींस बिल्ड विफल करें
- 2. टीमसिटी - एक परीक्षण विफल होने पर रोकें
- 3. परीक्षण धागा सुरक्षा स्पॉक
- 4. स्पॉक + ड्रोल परीक्षण
- 5. स्पॉक
- 6. प्रविष्टि विफल होने पर
- 7. स्पॉक इकाई परीक्षण तो खंड
- 8. पैकेज द्वारा स्पॉक ऑर्डर परीक्षण
- 9. स्पॉक
- 10. ब्रेकपॉइंट हिट होने पर कोड निष्पादित करें?
- 11. Grails में निर्भरता इंजेक्शन स्पॉक विशिष्टता परीक्षण
- 12. सत्यापित करें कि स्पॉक
- 13. परीक्षण शुरू होने पर परीक्षण
- 14. डीजेंगो परीक्षण में परीक्षण विफल होने पर ipdb को कैसे कॉल करें?
- 15. कर्म - जैस्मीन: परीक्षण विफल होने पर लाइन नंबर दिखाएं
- 16. सामग्री प्रकार बनाने के बाद क्रियाएं कैसे निष्पादित करें?
- 17. स्पॉक
- 18. स्पॉक का उपयोग कर Grails सेवा का परीक्षण कैसे करें?
- 19. स्पॉक- सबक्लास
- 20. मैट्रिक्स विकर्ण होने पर परीक्षण कैसे करें?
- 21. 'URL' पर 'createObjectURL' निष्पादित करने में विफल:
- 22. स्पॉक
- 23. एंड्रॉइड अधिसूचना रद्द होने पर कोड निष्पादित करें
- 24. यूनिट परीक्षण नियंत्रक क्रियाएं जो IsAjaxRequest()
- 25. मेलट्टो विफल होने पर पता चला
- 26. 'xmlhttprequest' पर 'प्रेषण' निष्पादित करने में विफल
- 27. कोणीय परीक्षण निष्पादित करने में विफल साथ नाकाम रहने 'XMLHttpRequest'
- 28. क्या स्पॉक
- 29. यूनिट परीक्षण ग्रोवी 2.0 स्पॉक के साथ: सेटअप()
- 30. यूनिट परीक्षण विफल होने के बाद विजुअल स्टूडियो बिल्ड विफल होने के लिए कैसे असफल हो
सेवा निर्देशिका में पैकेज के नाम के साथ फ़ाइल बनाने के पीछे तर्कसंगत क्या है? – eddyrokr