2015-08-08 7 views
6

मैं JUnit और Mocks साथ काम किया है, लेकिन मैं सोच रहा हूँ में स्टब्स उपयोग करने के लिए, JUnit और कैसे JUnit, जावा में स्टब्स का उपयोग करने के मजाक उड़ाता है और स्टब्स के बीच मतभेद क्या हैं? और मैक्स के रूप में जिनमें EasyMock, Mockito और इतने पर, जावा में स्टब्स का उपयोग क्या करता है?जावा - कैसे JUnit

कृपया जावा में स्टब्स के लिए कुछ उदाहरण कोड दें।

धन्यवाद!

+0

आशा इस [जवाब] (http://stackoverflow.com/questions/3459287/whats-the-difference-between-a-mock -stub) आप –

+0

मैं पढ़ा है कि पहले और :( – Hamid

+0

मदद नहीं की यह प्रश्न-प्रश्नकर्ता उदाहरण कोड और मौजूदा अनुसंधान वे किया है प्रदान करने के लिए की जिम्मेदारी है। यह सवाल सुधार की जरूरत है मदद मिलेगी। –

उत्तर

10

JUnit में स्टब्स उपयोग करने के लिए आप किसी भी व्यवस्थाएं की जरूरत नहीं है।

आपको कुछ इंटरफ़ेस ठूंठ चाहते हैं, बस इसे लागू:

interface Service { 
    String doSomething(); 
} 

class ServiceStub implements Service { 
    public String doSomething(){ 
     return "my stubbed return"; 
    } 
} 

फिर नए ठूंठ वस्तु बनाने और परीक्षण वस्तु को यह इंजेक्षन।

आप चाहते ठूंठ ठोस वर्ग, उपवर्ग बना सकते हैं और ओवरराइड तो टोंटदार तरीके:

class Service { 
    public String doSomething(){ 
     // interact with external service 
     // make some heavy computation 
     return "real result"; 
    } 
} 

class ServiceStub extends Service { 
    @Override 
    public String doSomething(){ 
     return "stubbed result"; 
    } 
} 
+0

आप मेरा मतलब केवल कुछ कोड फिर से लिखें, लेकिन इस बार अधिक सरल और इसके लिए एक टेस्टकेस लिखें? एक इंटरफेस, एक वर्ग और एक टेस्टक्लास? यह बात है? – Hamid

+0

@ हामिद हां, आप सही हैं। यदि आप नकली का उपयोग करना चाहते हैं, तो मुझे लगता है कि कुछ वर्गों को बाहरी सेवाओं या डेटाबेस से बातचीत करने की आवश्यकता है। इन इंटरैक्शन से बचने के लिए आप मूल कक्षाओं की तुलना में आसान कार्यान्वयन के साथ स्टब लिख सकते हैं। –

+0

क्या आप मुझे उस पर एक उदाहरण देंगे? यह कैसे आसान है? – Hamid

12

यह ढांचा या मेरी राय में प्रौद्योगिकी फर्क नहीं पड़ता। मोक्स और स्टब्स को निम्नानुसार परिभाषित किया जा सकता है।

एक ठूंठ प्रणाली में पहले से मौजूद निर्भरता (या सहयोगी) के लिए एक चलाया प्रतिस्थापन है। स्टब का उपयोग करके, आप सीधे निर्भरता से निपटने के बिना अपने कोड का परीक्षण कर सकते हैं।

एक नकली वस्तु प्रणाली इकाई परीक्षा उत्तीर्ण या असफल हो गया है कि क्या फैसला करता है कि एक नकली वस्तु है। यह सत्यापित करके ऐसा करता है कि परीक्षण के तहत ऑब्जेक्ट नकली ऑब्जेक्ट के साथ अपेक्षित है या नहीं।

शायद इन छवियों को एक ठूंठ एक नकली के बीच संबंधों को स्पष्ट कर सकते हैं।

स्टब Stub

नकली Mock

+0

परिभाषाओं के लिए धन्यवाद;) – Hamid

+0

आपका मतलब है, जब हम स्टब्स का उपयोग करते हैं, तो हम stubClass का ऑब्जेक्ट नहीं बनाते हैं? – Hamid

+0

@ सेर्गेई लागुतिन के जवाब के अनुसार। आप सीयूटी (कोड के तहत कोड/कक्षा) को खिलाने के लिए स्टब बनाते हैं - स्टब एक निर्भरता प्रतिस्थापन है। –