2014-04-11 8 views
5

में टेस्टरुनर क्लास के लिए कौन सा डिज़ाइन पैटर्न का उपयोग किया जाता है, मैं जुनीट के टेस्टरुनर (पैकेज junit.textui) कक्षा के लिए उपयोग किए गए डिज़ाइन पैटर्न को समझने की कोशिश कर रहा था। TestRunner क्लास श्रोता का विस्तार कर रहा है और श्रोता का संदर्भ है।जूनिट

यदि यह ऑब्जर्वर डिज़ाइन पैटर्न है, तो यह श्रोता विस्तार क्यों कर रहा है? यह श्रोता का केवल संदर्भ होना चाहिए।

+0

हाय और एसओ में आपका स्वागत है। यह साइट लोगों को उनकी विशिष्ट प्रोग्रामिंग समस्याओं को हल करने में मदद करने के लिए है। कृपया सहायता केंद्र http://stackoverflow.com/help पर एक नज़र डालें, यह देखने के लिए कि कौन से प्रश्न और आपको यहां कैसे पूछना चाहिए। –

+1

@ ईन यह एक "व्यावहारिक, उत्तरदायी समस्या" जैसा लगता है जो "सॉफ्टवेयर विकास के लिए अद्वितीय" है। इसके लिए थोड़ा सा सूक्ष्मता भी है, टेस्ट रोलनर टेस्टलिस्टर लागू करता है लेकिन इसका उपयोग प्रतीत नहीं होता है। –

उत्तर

3

junit.textui.TestRunnerObserver pattern के अनुरूप है, लेकिन यह पर्यवेक्षक, नहीं विषय है। कम से कम, यह पर्यवेक्षक होगा-यह अब और नहीं है।

JUnit को उजागर करता है TestListener इंटरफ़ेस: TestResult वर्ग एक testcase चलाता है, अपने स्वयं के तरीकों startTest और endTest बुला। TestResult में TestListener उदाहरणों की एक सूची भी शामिल है, और जब भी कोई परीक्षण शुरू होता है या समाप्त होता है तो उन सभी को सूचित करता है। यह अत्यंत महत्वपूर्ण पर्यवेक्षक पैटर्न है: TestResult विषय है, जो टेस्टलिस्टर उदाहरणों के संग्रह को सूचित करता है, जिसमें से एक टेस्टरनर खुद को सूची में जोड़ सकता है।

जिसके अनुसार, TestRunner doesn't currently add itself as a listener to TestResult, और इसके लिए आवश्यक testStarted, testEnded, और testFailed तरीकों में से खाली कार्यान्वयन है। इसके बजाए, यह श्रोताओं की सूची में ResultPrinter जोड़ता है; मुझे लगता है कि यह किसी बिंदु पर TestRunner से बाहर फैला था।

तो, टेस्टरुनर एक पर्यवेक्षक बनने के लिए स्थापित है, लेकिन यह अब एक जैसा कार्य नहीं करता है। सभी ने कहा, यह वास्तव में डिजाइन पैटर्न की ताकत का प्रदर्शन करता है: यह उन विशिष्ट इंटरफेस के खिलाफ कोडिंग करके कोड और अलग व्यवहार को दोबारा करने का मौका देता है।

संबंधित मुद्दे