मैं अपनी 'आयातक सेवा' कक्षा का परीक्षण करने के लिए एक टेस्ट क्लास लिख रहा हूं। यह सेवा एक इनपुटस्ट्रीम पढ़ती है और इसके डेटा से ऑब्जेक्ट बनाता है। वस्तु, इस मामले में एक बिल्डर वर्ग, 'आयातक सेवा' कक्षा के भीतर तत्काल है। मेरी 'आयातक सेवा' कक्षा का परीक्षण करने के लिए मुझे बिल्डर वर्ग पर आमंत्रण सत्यापित करने की आवश्यकता है। इसके लिए मैं एक मॉकिंग फ्रेमवर्क का उपयोग करना चाहता हूं, हालांकि 'आयातक सेवा' के बाहर 'बिल्डर' ऑब्जेक्ट का नकली उदाहरण बनाना संभव है?आंतरिक तत्काल ऑब्जेक्ट का मजाक
मेरे 'ImporterService' वर्ग की विधि लगता है:
public Builder importFrom(BufferedReader reader) throws IOException {
String someValue = readFrom(reader);
Builder builder = new Builder(); // I need to mock this Builder object...
builder.someMethod(someValue); // to see of a method is called with the expected value
}
मैं एक संरक्षित विधि है जो मैं परीक्षण की स्थापना पर ओवरराइड कर सकते हैं में बिल्डर वर्ग के निर्माण के जाने के बारे में सोच रहा था। लेकिन यह समाधान मेरे लिए बहुत अच्छा नहीं लगता है क्योंकि 'आयातक सेवा' कक्षा कुछ आंतरिक तर्क लीक कर रही है और अन्य वर्गों द्वारा विधि को ओवरराइड करना संभव बनाता है जो मैं नहीं चाहता हूं।
: आप निम्न उपाय अपनाते हैं
अपने इकाई परीक्षण में:
यहाँ दिखा कैसे आप इस लक्ष्य को हासिल कर सकते हैं EasyMock का उपयोग कर एक उदाहरण है वसंत में या एक और डीआई आपके यूनिट परीक्षण ढांचे। जब तक आप अपने तारों का परीक्षण नहीं कर लेते हैं –