spock interview questions with answers
स्पॉक साक्षात्कार के प्रश्नों की इस सूची के साथ अपने स्पोक साक्षात्कार को सफलतापूर्वक साफ़ करें:
इस में सभी के लिए स्पार्क ट्यूटोरियल्स , हम सब के बारे में पता लगाया स्पॉक में एकीकरण और कार्यात्मक परीक्षण हमारे पिछले ट्यूटोरियल में।
यह ट्यूटोरियल स्पॉक फ्रेमवर्क के आसपास सबसे अधिक पूछे जाने वाले साक्षात्कार प्रश्नों को कवर करेगा।
हम Spock स्थिरता के तरीकों और अंतर्निहित एक्सटेंशन सपोर्ट को भी समझने की कोशिश करेंगे जो Spock को बहुत सारे परीक्षण प्रकारों जैसे कि Unit, Integration और अंत से अंत तक एक बहुत शक्तिशाली उपकरण बनाते हैं।
सर्वाधिक लोकप्रिय वर्तनी साक्षात्कार प्रश्न
नीचे सूचीबद्ध उत्तर और उदाहरण के साथ सबसे अधिक पूछे जाने वाले स्पॉक साक्षात्कार प्रश्न हैं।
आइए ढूंढते हैं!!
Q # 1) क्या एक स्पॉक टेस्ट कई बार और फिर ब्लॉक हो सकता है?
उत्तर: आमतौर पर छोटे परीक्षण या परिदृश्यों की सिफारिश की जाती है, क्योंकि एक ही परीक्षण में बहुत सी चीजें करने की कोशिश करना एक कोड गंध हो सकता है। यह कहते हुए कि, एक परीक्षण में कई और तब ब्लॉक होना पूरी तरह से मान्य है। परीक्षण तभी सफल माना जाएगा जब सभी तत्कालीन ब्लॉक पास अवस्था में हों।
आइए इसे समझने के लिए एक उदाहरण देखें:
def 'illustrate multiple when and then blocks'() { given: def input1 = 50 def input2 = 100 def result when: result = input1 + input2 then: result == 150 when: result = input2 - input1 then: result == 50 }
उपरोक्त कोड ब्लॉक में, आप देख सकते हैं कि हमारे पास 2 हैं जब और फिर ब्लॉक होते हैं।
कृपया नीचे दिए गए बिंदुओं पर ध्यान दें:
- ब्लॉकों को उनकी उपस्थिति के क्रम में निष्पादित किया जाता है अर्थात् क्रमिक रूप से।
- किसी के भी असफल होने पर ब्लॉक परीक्षण में विफल हो जाएगा।
- सफल होने के लिए समग्र परीक्षण के लिए सभी तत्कालीन ब्लॉकों में अभिकथन पास होना चाहिए।
Q # 2) स्पॉक में सभी फिक्सचर विधियाँ क्या उपलब्ध हैं?
उत्तर: फिक्सेचर मेथड कॉलबैक की तरह होते हैं जिन्हें किसी विशेष ईवेंट हुक के ट्रिगर होने पर कहा जाता है।
Spock ने 4 परीक्षण फिक्स्चर प्रदान किए जो विभिन्न घटनाओं के खिलाफ शुरू होते हैं:
- setupSpec - संपूर्ण Spec फ़ाइल निष्पादन शुरू होने से पहले एक बार चलता है।
- क्लीनअपस्पीक - जब एक बार दिए गए Spec फ़ाइल में सभी परीक्षण निष्पादित हो जाते हैं, तो एक बार चलता है
- सेट अप - विनिर्देशन में प्रत्येक परीक्षण से पहले एक बार चलता है।
- साफ - सफाई - विनिर्देशन में प्रत्येक परीक्षण के बाद एक बार चलता है।
चलिए फ़िल्चर विधियों को दर्शाने के लिए एक कोड नमूना देखते हैं:
class TestFixtureSpec extends Specification { def setupSpec() { println 'in setup spec!' } def cleanupSpec() { println 'in cleanup spec!' } def setup() { println 'in setup!' } def cleanup() { println 'in cleanup!' } def 'test spec1'() { given: println '****test spec1****' } def 'test spec2'() { given: println '****test spec2****' }}
नीचे दिए गए कोड नमूने का आउटपुट है:
मैक पर 7zip फाइलें कैसे खोलें
सेटअप कल्पना में!
सेटअप में!
**** परीक्षण कल्पना 1 ****
सफाई में!
सेटअप में!
**** परीक्षण कल्पना ****
सफाई में!
सफाई की कल्पना में!
जैसा कि ऊपर दिखाया गया है, आप देख सकते हैं कि सेटअप और क्लीनअप युक्ति को पूरी कल्पना के लिए केवल एक बार कॉल किया जाता है और सेटअप और क्लीनअप चरणों / फिक्स्चर को प्रति परीक्षण एक बार कहा जाता है।
Q # 3) क्या REST- आधारित सेवाओं के परीक्षण के लिए Spock परीक्षण का उपयोग किया जा सकता है?
उत्तर: हां, स्पॉक फ्रेमवर्क का उपयोग सामान्य जावा पुस्तकालयों जैसे रेस्ट टेम्प्लेट, आदि का उपयोग करके तैनात बाकी सेवाओं के लिए ई 2 ई या एकीकरण परीक्षण बनाने के लिए किया जा सकता है (इसके अलावा, कृपया ध्यान दें कि, स्पॉक का उपयोग स्प्रिंग बूट आधारित अनुप्रयोगों के लिए परीक्षण चलाने के लिए भी किया जा सकता है। जैसे अन्य ढांचे के साथ सेलेनियम ) है।
आइए इसे एक सरल उदाहरण के साथ देखें जो स्प्रिंग के रेस्टेमप्लेट वर्ग का उपयोग करता है और एक सार्वजनिक होस्टेड एपीआई पर एक ऑपरेशन प्राप्त करता है और गैर-शून्य होने की प्रतिक्रिया की जांच करता है।
उदाहरण:
class RestApiIntegrationSpec extends Specification { def 'check rest api status'() { when: 'a rest call is performed to the status page' RestTemplate restTemplate = new RestTemplate() String response = restTemplate.getForObject('https://httpbin.org/get', String.class) then: response != null } }
उपरोक्त उदाहरण में, आप Spock विनिर्देशन का उल्लेख कर सकते हैं जिसका उपयोग किसी सार्वजनिक API की प्रतिक्रिया को मुखर करने के लिए किया जा रहा है।
Q # 4) स्पॉक फ्रेमवर्क की सीमाएँ क्या हैं?
उत्तर: यद्यपि स्पॉक फ्रेमवर्क के लिए सीखने की अवस्था इतनी आसान नहीं है, क्योंकि यह सीखना आसान है, लेकिन इसकी घोषणात्मक वाक्य रचना इसे अत्यधिक पठनीय बनाती है।
इस बीच, कुछ बिंदु हैं जिन पर विचार किया जा सकता है:
- जावा कोडबेस पर अनुप्रयोगों के लिए, Spock के उपयोग से एक नई भाषा स्टैक यानि ग्रूवी को जोड़ा जाएगा।
- देशी JUnit परीक्षणों की तुलना में स्पोक परीक्षण थोड़े धीमे चलते हैं।
- स्पॉक के लिए आईडीई समर्थन JUnit जैसे अन्य फ्रेमवर्क के लिए उतना अच्छा नहीं है।
उपरोक्त सभी बिंदुओं के बावजूद, अभी भी, स्पॉक ढांचे के फायदों ने स्पैक की छोटी सूची को पछाड़ दिया है।
Q # 5) स्पॉक फ्रेमवर्क के कुछ बिल्ट-इन एक्सटेंशन की व्याख्या करें।
उत्तर: Spock बहुत सारे बिल्ट-इन एक्सटेंशन / हुक / ट्रिगर प्रदान करता है जो अधिकतर एनोटेशन-आधारित होते हैं (हमने परीक्षण जुड़नार अनुभाग / प्रश्न में उनमें से एक जोड़े को देखा)।
आइए कुछ उदाहरणों के साथ अंतर्निहित चर्चा देखें:
@नज़रअंदाज़ करना: एक सुविधा (या व्यक्तिगत विधि) को निष्पादित होने से रोकने के लिए। बस सजाने की विधि (व्यक्तिगत परीक्षण विधि) या एक संपूर्ण युक्ति का उपयोग करने के लिए, यह सुनिश्चित करेगा कि एनोटेट विधि या वर्ग निष्पादित नहीं होता है।
@Ignore def 'check case-insensitive equality of 2 strings'() { given: 'two input strings' String str1 = 'hello' String str2 = 'HELLO world' when: 'strings are lowercased' str1 = str1.toLowerCase() str2 = str2.toLowerCase() then: 'equal strings should return success' str1 == str2 }
@IgnoreRest: यह एनोटेशन तब उपयोगी होता है जब आप केवल एक का चयन करना चाहते हैं और दिए गए विनिर्देश के बाकी तरीकों को निष्पादित करते हैं।
@IgnoreRest def 'check case-insensitive equality of 2 strings'() { given: 'two input strings' String str1 = 'hello' String str2 = 'HELLO world' when: 'strings are lowercased' str1 = str1.toLowerCase() str2 = str2.toLowerCase() then: 'equal strings should return success' str1 == str2 } def 'check addition of 2 numbers'() { given: int input1 = 10 int input2 = 25 expect: input1.getClass().toString() == 'class java.lang.Integer' input2.getClass().toString() == 'class java.lang.Integer' input1 = Integer.MIN_VALUE when: int result = input1 + input2 then: result == 35 }
जैसा कि ऊपर दिए गए उदाहरण में देखा गया है, @IgnoreRest के साथ एनोटेट किया गया तरीका निष्पादित किया जाएगा और बाकी परीक्षणों को अनदेखा किया जाएगा।
@IgnoreIf: यह एनोटेशन सशर्त अनदेखी है।
उदाहरण के लिए: अगर आप Mac OS पर कुछ परीक्षण नहीं चलाना चाहते हैं, तो आप System.getProperty ('os.name') के साथ @IgnoreIf के संयोजन का उपयोग कर सकते हैं, जो सुनिश्चित करेगा कि मिलान ओएस पाए जाने पर ही परीक्षण चलाए जाएंगे ।
नीचे दिए गए कोड नमूने के साथ इसे समझने का प्रयास करें:
@IgnoreIf({ System.getProperty('os.name').contains('Mac') }) def 'check case-insensitive equality of 2 strings'() { given: 'two input strings' String str1 = 'hello world' String str2 = 'HELLO world' when: 'strings are lowercased' str1 = str1.toLowerCase() str2 = str2.toLowerCase() then: 'equal strings should return success' str1 == str2 }
उपरोक्त कोड नमूने में, हमने System.getProperty पर एक शर्त के साथ @IgnoreIf एनोटेशन का उपयोग किया है जो संपत्ति के मूल्य में 'मैक' के लिए जाँच करेगा और केवल तभी नज़रअंदाज़ करेगा जब शर्त मैच सफल हो।
आइए एक और विस्तार यहाँ देखें @समय समाप्त: यह निष्पादन के तहत परीक्षण के लिए अपनी पसंद की इकाई में टाइमआउट मूल्य का उल्लेख करने में मदद करता है और यदि टाइमआउट सीमा का उल्लंघन किया जाता है, तो परीक्षण एक अपवाद फेंक देगा।
यहां ध्यान देने के लिए एक और महत्वपूर्ण बिंदु है, @Timeout एनोटेशन को पूरी कल्पना के रूप में भी उल्लेख किया जा सकता है और यह सभी व्यक्तिगत परीक्षणों की अवधि को जोड़ देगा और दहलीज भंग के मामले में एक अपवाद फेंक देगा।
@Timeout(value=10, unit= TimeUnit.MILLISECONDS) class SampleSpec extends Specification { def 'check case-insensitive equality of 2 strings'() { //test1 } def 'check addition of 2 numbers'() { //test2 } }
उपरोक्त कोड में, यदि युक्ति का कुल निष्पादन समय 10 ms से अधिक है, तो परिदृश्य निष्पादन विफल हो जाएगा। आप त्रुटि कंसोल में त्रुटि विवरण के साथ आउटपुट देख सकते हैं।
उपर्युक्त एक्सटेंशनों के समान, कुछ अन्य अंतर्निहित एक्सटेंशन भी हैं:
@Requires: जिसे सही होने के लिए एक विशिष्ट स्थिति की आवश्यकता होती है।
@समस्या: परीक्षण मामले से जुड़े किसी भी दोष को जोड़ने के लिए, आदि।
ये एक्सटेंशन स्पोक विनिर्देशों में बहुत अधिक लचीलापन और शक्ति जोड़ते हैं और परीक्षण निष्पादन के लिए बहुत अधिक नियंत्रण देते हैं।
निष्कर्ष
इस प्रकार, हमने इस ट्यूटोरियल में सबसे लोकप्रिय स्पॉक इंटरव्यू प्रश्न कवर किए हैं। स्पॉक के लिए सीखने की अवस्था इस तथ्य के कारण कम है कि भाषा ग्रोवी एक घोषित प्रोग्रामिंग शैली का अनुसरण करती है और अत्यधिक पठनीय है।
ओसी लेयर 2 में कौन से उपकरण काम करते हैं
हालांकि अपेक्षाकृत नया है, स्पॉक विभिन्न प्रकार के परीक्षणों को लिखने के लिए पसंद के ढांचे के रूप में लोकप्रियता प्राप्त कर रहा है जावा या ग्रूवी-आधारित अनुप्रयोग।
आशा है, आपको इस Spock Series में सभी जानकारीपूर्ण ट्यूटोरियल पसंद आए। हमें वास्तव में यकीन है कि इन ट्यूटोरियल्स ने स्पॉक के आपके ज्ञान और समझ को समृद्ध किया होगा।
PREV ट्यूटोरियल | सबसे पहले ट्यूटोरियल
अनुशंसित पाठ
- स्पॉक फ्रेमवर्क के साथ यूनिट टेस्ट लिखना
- सेलेनियम के साथ एकीकरण और कार्यात्मक परीक्षण के लिए स्पॉक
- मॉकिंग और स्टबिंग (वीडियो ट्यूटोरियल के साथ उदाहरण)
- स्पॉक फ्रेमवर्क के साथ डेटा-संचालित या परिमितित परीक्षण
- स्पॉक ट्यूटोरियल: स्पॉक एंड ग्रूवी के साथ परीक्षण
- साक्षात्कार प्रश्न और उत्तर
- ईटीएल परीक्षण साक्षात्कार प्रश्न और उत्तर
- 20 सबसे लोकप्रिय TestNG साक्षात्कार प्रश्न और उत्तर