टेस्ट प्रोजेक्ट वाले शुरुआती लोगों के लिए jMock ट्यूटोरियल
जेमॉक क्या है?
jMock एक लाइब्रेरी है जो मॉक ऑब्जेक्ट के साथ जावा कोड का परीक्षण-संचालित विकास बनाने में मदद करती है जेमॉक हम स्वतंत्र रूप से कक्षा का परीक्षण कर सकते हैं जो अन्य कक्षा पर निर्भर करता है।
मान लीजिए कि यदि एक वर्ग दूसरे वर्ग पर निर्भर करता है तो हम आश्रित वर्ग का एक मॉक बना सकते हैं और आश्रित वर्ग का परीक्षण करने के लिए प्रारंभिक गुण सेट कर सकते हैं।
जेमॉक ट्यूटोरियल उदाहरण:
नोट: हम इस परीक्षण परियोजना के लिए एक्लिप्स प्लेटफ़ॉर्म का उपयोग कर रहे हैं। आप यहां से एक्लिप्स डाउनलोड कर सकते हैं यहाँ.
सुनिश्चित करें जावा एसई रनटाइम पर्यावरण इंस्टॉलेशन शुरू करने के लिए एक्लिप्स इंस्टॉलर पहले से ही इंस्टॉल है।
जावा में टेस्ट प्रोजेक्ट नाम से एक टेस्ट प्रोजेक्ट बनाएं। इसके क्लासपाथ में निम्नलिखित जार शामिल करें:
- jmock-2.5.1.jar
- हैमक्रेस्ट-कोर-1.1.jar
- हैमक्रेस्ट-लाइब्रेरी-1.1.jar
- JUnit-4.5.jar
ITestInterface नामक एक इंटरफ़ेस बनाएं। इस इंटरफ़ेस में निम्नलिखित कोड डालें:
पैकेज परीक्षण;
सार्वजनिक इंटरफ़ेस ITestInterface
{
सार्वजनिक पूर्णांक परीक्षण();
}
TestClass1 बनाएं। इस क्लास में निम्नलिखित कोड डालें
पैकेज परीक्षण;
पब्लिक क्लास TestClass1 ITestInterface लागू करता है
{
सार्वजनिक पूर्णांक परीक्षण()
{
वापसी 3;
}
}
TestClass2 बनाएं। इस क्लास में निम्नलिखित कोड डालें
पैकेज परीक्षण;
सार्वजनिक वर्ग TestClass2
{
आईटीटेस्टइंटरफ़ेस टेस्टइंटरफ़ेस;
सार्वजनिक TestClass2()
{
this.testInterface=testInterface;
}
सार्वजनिक int testMock()
{
int परिणाम=testInterface.test();
वापसी परिणाम;
}
}
TestClass3 बनाएं। इस क्लास में निम्नलिखित कोड डालें
पैकेज परीक्षण;
आयात junit.framework.Assert;
आयात org.jmock.Mockery;
आयात org.junit.Test;
सार्वजनिक वर्ग TestClass3
{
@परीक्षा
सार्वजनिक शून्य परीक्षणJmock()
{
org.jmock.Mockery TestInterfaceMock= new Mockery();
अंतिम ITestInterface testInterface=TestInterfaceMock.mock(ITestInterface.class);
TestInterfaceMock.checking(नया org.jmock.Expectations()
{{
oneOf(testInterface).test();
विल(रिटर्नवैल्यू((3)));
}});
int j=testInterface.test();
System.out.println(j);
Assert.assertEquals(j, 3);
}
}
उपरोक्त उदाहरण से यह स्पष्ट है कि TestClass1 इंटरफ़ेस ITestInterface को लागू करता है। यहां यदि हम देखते हैं कि TestClass2 TestClass1 पर निर्भर है। तो इसे इकाई परीक्षण योग्य बनाने के लिए हम TestClass2 में TestClass1 का नया कार्य नहीं कर रहे हैं। हम नकली ऑब्जेक्ट का उपयोग कर रहे हैं।
TestClass3 में हम ITestInterface का मॉक ऑब्जेक्ट बना रहे हैं। हम TestClass2 की यूनिट टेस्टिंग के दौरान कॉल करने पर इस ऑब्जेक्ट के 3 लौटने की उम्मीद सेट कर रहे हैं। उदाहरण के लिए TestClass3 में जब हम testInterface.test() पर कॉल करते हैं तो कॉल TestClass2 पर जाता है। TestClass2 में जब हम testInterface.test() को कॉल करते हैं तो मान मॉक ऑब्जेक्ट द्वारा लौटाया जाता है। इस तरह हम TestClass2 का स्वतंत्र रूप से परीक्षण कर रहे हैं।
उपरोक्त उदाहरण का परीक्षण करने के लिए TestClass3 पर राइट क्लिक करें और जूनिट टेस्ट के रूप में रन का चयन करें।
यह निम्नलिखित स्क्रीन दिखाएगा:
टेस्ट केस सफलतापूर्वक निष्पादित!
5 प्रतिक्रियाएं
क्या मैं जान सकता हूँ कि टेस्टक्लास2 टेस्टक्लास1 पर किस प्रकार निर्भर है?
जेमॉक के बारे में बहुमूल्य जानकारी साझा करने के लिए धन्यवाद! यह पढ़कर अच्छा लगा!
You are welcome Tanuja 🙂 Happy to help!
अच्छी पोस्ट
Thank you 🙂