spock integration
एकीकरण परीक्षण के लिए (बाकी सेवाओं की तरह) और कार्यात्मक परीक्षण के लिए (सेलेनियम के साथ):
हमने खोजबीन की मॉकिंग, स्टबिंग और स्पॉक में जासूसी हमारे पिछले ट्यूटोरियल में।
इस में स्पॉक पर पूर्ण प्रशिक्षण ट्यूटोरियल श्रृंखला , अब तक हमने स्पॉक फ्रेमवर्क का उपयोग करके यूनिट परीक्षण को कवर किया है। यूनिट परीक्षण, आम तौर पर सभी एकीकरण बिंदुओं के साथ एकल वर्ग का परीक्षण करते हैं या बाहरी कॉल को नकली कॉल या स्टब्स द्वारा प्रतिस्थापित किया जा रहा है।
एकीकरण परीक्षण, इसके विपरीत, 2 टुकड़ों के बीच एकीकरण अंक का परीक्षण करें। उदाहरण के लिए, 2 सेवाओं के बीच अनुबंधों का परीक्षण, सेवा और डेटाबेस के बीच एकीकरण का परीक्षण, आदि।
इस ट्यूटोरियल में, हम सीखेंगे कि Spock का उपयोग कैसे करें एकीकरण जांच (बाकी सेवाओं की तरह) और के लिए क्रियात्मक परीक्षण । उदाहरण के लिए , सेलेनियम के साथ स्पॉक को एकीकृत करना, आदि।
यहाँ एक वीडियो ट्यूटोरियल है:
आप क्या सीखेंगे:
स्प्रिंग स्पोक एकता
आइए एक उदाहरण के साथ इसे समझने की कोशिश करें कि हम स्प्रिंग बूट MVC आधारित ऐप्स के साथ Spock को कैसे एकीकृत कर सकते हैं।
गोलाकार सरणी कतार c ++
हालांकि स्प्रिंग में, एनोटेशन का एक समृद्ध सेट है और JUnit के साथ अच्छी तरह से एकीकृत होता है, Spock जोड़ता है या BDD स्टाइल परीक्षण दृष्टिकोण को पढ़ने के लिए एक आसान जोड़ने में मदद करता है जिससे टेस्ट विनिर्देशों को अत्यधिक पठनीय बनाया जा सकता है।
इस एप्लिकेशन के बारे में
हम एक एंडपॉइंट को लागू करने वाले बाकी आधारित नियंत्रक के साथ एक ग्रेड आधारित स्प्रिंग बूट स्टार्टर एप्लिकेशन का उपयोग करेंगे।
आवश्यक निर्भरताएँ
स्प्रिंग बूट निर्भरता के अलावा, हम सामान्य ग्रूवी संकलन निर्भरता के साथ-साथ एक स्पोक कोर निर्भरता भी जोड़ देंगे। एक अन्य स्पॉक आधारित निर्भरता है स्पॉक-वसंत , जो स्पॉक विनिर्देशों को स्प्रिंग-आधारित एनोटेशन का उपयोग करने की अनुमति देता है।
नीचे सूचीबद्ध आवश्यक निर्भरता की सूची है:
- कार्यान्वयन 'org.springframework.boot: स्प्रिंग-बूट-स्टार्टर'
- परीक्षण कार्यान्वयन f org.springframework.boot: स्प्रिंग-बूट-स्टार्टर-टेस्ट '
- संकलन 'org.codehaus.groovy: groovy-all: 2.4.8'
- testCompile 'org.spockframework: spock-core: 1.2-groovy-2.4'
- testCompile समूह:। org.spockframework ', नाम:-स्पॉक-स्प्रिंग', संस्करण: y 1.2-groovy-2.4 '
शुरू करना
चलो वास्तविक परीक्षण के साथ शुरू करते हैं।
पहले परीक्षण में, हम जाँचेंगे कि क्या बीन नियंत्रक वर्ग के लिए बनाई गई है जिसे हमने जोड़ा है। इसके लिए, परीक्षण शुरू होने पर आवेदन शुरू हो जाना चाहिए।
इसे प्राप्त करने के लिए, हम @ जोड़ देंगे स्प्रिंगबॉटटेस्ट एनोटेशन जो परीक्षण निष्पादित होने से पहले आवेदन संदर्भ को चलाना सुनिश्चित करता है।
नीचे परीक्षण कोड है:
@SpringBootTest class SampleSpringSpec extends Specification { @Autowired private WebController webController def 'when context is loaded then controller bean is created'() { expect: 'the WebController is created' webController != null } }
उपरोक्त कोड में, आप देख सकते हैं कि हमने उपयोग किया है @SpringBootTest एनोटेशन जो ApplicationContext को शुरू करना सुनिश्चित करता है, इससे पहले कि परीक्षण निष्पादित हो जाए और हमने स्प्रिंग एनोटेशन के अनुसार वेबकंट्रोलर बीन को ऑटो-वायर्ड कर दिया है।
परीक्षण पुष्टि करता है कि Webcontroller बीन आवेदन के संदर्भ के एक हिस्से के रूप में त्वरित हो जाता है।
चलिए एक और परीक्षा देखते हैं, जहां हम वेब नियंत्रक द्वारा उजागर समापन बिंदु को हिट करेंगे, और प्रतिक्रिया कोड के साथ-साथ स्प्रिंग फ्रेमवर्क टेस्ट क्लासेस यानी मॉकमिक्सल और मॉकम्यूबररैक्स्टब्यूइल्डर्स के माध्यम से प्रतिक्रिया पाठ को मान्य करेंगे।
कृपया नीचे दिए गए परीक्षण कोड को देखें:
@AutoConfigureMockMvc(secure=false) @WebMvcTest() class SampleMvcSpec extends Specification{ @Autowired private MockMvc mvc def 'assert response and status code for /greeting'() { expect: 'status code as 200 and response string as Hello world!' mvc.perform(MockMvcRequestBuilders.get('/hello')) .andExpect(MockMvcResultMatchers.status().isOk()) .andReturn().response.contentAsString == 'Hello world!' } }
स्पोक सेलेनियम एकीकरण
यहाँ एक वीडियो ट्यूटोरियल है:
अब आइए एक उदाहरण देखते हैं कि हम स्पॉक का उपयोग करके सेलेनियम-आधारित परीक्षणों को कैसे एकीकृत कर सकते हैं। इन्हें किसी अन्य विशिष्ट निर्भरता की आवश्यकता नहीं है, लेकिन सामान्य तौर पर, आप मौजूदा तरीकों का उपयोग करके BDD का अधिक प्रभावी ढंग से सेलेनियम परीक्षण आयोजित कर सकते हैं।
इस में उदाहरण, हम ChromeWebDriver के माध्यम से एक सरल सेलेनियम परीक्षण देखेंगे जो Google खोज पर एक कीवर्ड की खोज करने और खोज परिणाम पृष्ठ के शीर्षक को सत्यापित करने का प्रयास करता है।
class SeleniumSpec extends Specification { private static def WebDriver driver = new ChromeDriver() def 'cleanupSpec'() { if(driver != null) { driver.close() } } def 'selenium integration with spock'() { given: driver.navigate().to('https://www.google.co.in') WebElement searchBox = driver.findElement(By.cssSelector('input(name=q)')); WebElement submitSearchButton = driver.findElement(By.cssSelector('input(name=btnK)')); when: searchBox.sendKeys('India') Thread.sleep(5000) submitSearchButton.click() def title = driver.getTitle() then: title.toLowerCase()contains('india') } }
ध्यान दें कि हमने ChromeDriver के लिए वेबड्राइवर उदाहरण कैसे घोषित किया है और इसका उपयोग कल्पना के भीतर किया जाता है।
इसके अलावा, एक दिए गए चरण में, हमने उन सभी वेब तत्वों को घोषित / परिभाषित किया है जिनकी हमें परीक्षण निष्पादन के लिए आवश्यकता होगी।
Spock फ्रेमवर्क को भी एकीकृत किया जा सकता है और मौजूदा ऑटोमेशन फ्रेमवर्क के साथ उपयोग किया जा सकता है और हम Groovy में घोषणात्मक प्रोग्रामिंग की शक्ति का उपयोग करने के लिए Spock के साथ Java / JUnit आधारित परीक्षणों को बदल सकते हैं।
निष्कर्ष
इस ट्यूटोरियल में, हमने स्पोक आधारित परीक्षणों को अन्य रूपरेखाओं के साथ एकीकृत करने और परीक्षण प्रकारों जैसे इंटीग्रेशन टेस्ट और एंड-2-एंड टेस्ट के विभिन्न तरीकों का पता लगाया।
हमने स्प्रिंग फ्रेमवर्क और सेलेनियम-आधारित एकीकरण परीक्षणों के साथ स्पॉक एकीकरण के उदाहरणों को देखा। इनके समान, Spock का उपयोग REST- आधारित API के एकीकरण परीक्षण के लिए रेस्ट क्लाइंट के साथ परीक्षण लिखने के लिए भी किया जा सकता है।
जल्दी से अपने आगामी ट्यूटोरियल के साथ एक स्पॉक इंटरव्यू की तैयारी करें, जिसमें सबसे महत्वपूर्ण स्पॉक इंटरव्यू प्रश्न की सूची शामिल हो !!
PREV ट्यूटोरियल | अगले ट्यूटोरियल
अनुशंसित पाठ
- स्पॉक फ्रेमवर्क के साथ यूनिट टेस्ट लिखना
- उत्तर के साथ स्पॉक साक्षात्कार प्रश्न (सर्वाधिक लोकप्रिय)
- मॉकिंग और स्टबिंग (वीडियो ट्यूटोरियल के साथ उदाहरण)
- स्पॉक फ्रेमवर्क के साथ डेटा-संचालित या परिमितित परीक्षण
- स्पॉक ट्यूटोरियल: स्पॉक एंड ग्रूवी के साथ परीक्षण
- जेमीटर के साथ सेलेनियम का एकीकरण
- यूनिट परीक्षण, एकीकरण परीक्षण और कार्यात्मक परीक्षण के बीच अंतर
- कार्यात्मक परीक्षण बनाम गैर-कार्यात्मक परीक्षण