2013-09-04 5 views
5

पर टीडीडी-आईएनजी से कैसे संपर्क करेंगे, मैं एक शुद्ध टीडीडी फैशन में वसंत वेब एप्लिकेशन (हाइबरनेट के साथ) बनाने के लिए कैसे सलाह दूंगा। इसका मतलब है कि आपको इसके लिए असफल इकाई परीक्षण के बिना उत्पादन कोड नहीं लिखना चाहिए।आप एक वसंत वेब एप्लिकेशन

क्या आप अपने आवेदन संदर्भ के निर्माण की इकाई परीक्षण करेंगे? यदि हां, तो आप ऐसा करने के बारे में कैसे जाएंगे?

क्या एक्सएमएल या एनोटेशन आधारित कॉन्फ़िगरेशन के बजाय जावा कॉन्फ़िगरेशन का उपयोग करते समय एक वसंत ऐप को टीडीडी करना आसान होगा?

उत्तर

11

जब आप एक परीक्षण लिखते हैं जिसे वसंत ApplicationContext और डेटाबेस की आवश्यकता होती है, तो यह एक इकाई परीक्षण नहीं है, यह एकीकरण परीक्षण है। इकाई परीक्षण के लिए सामान्य नियम हैं:

  • वे एक बात का परीक्षण (यानी विधि अन्य वर्गों के लिए कॉल/सेम ​​पर सिकोड़ी रहे हैं)
  • वे एक डेटाबेस में एक दुबला सेटअप (यानी परीक्षण डाटा का कोई लोड हो रहा है है, कोई लेनदेन, कोई बहुत बड़ा एप्लिकेशन संदर्भ)

एकता परीक्षण, दूसरे हाथ पर:

  • धीमी गति से कर रहे हैं (डेटाबेस कनेक्शन, डेटाबेस में लोड हो रहा है परीक्षण डाटा बनाने, बड़े सेटअप चरण की कई BEA के तार की एनएस, वसंत कॉन्फ़िगर करें, ...)
  • भंगुर (कई निर्भरताओं के कारण)
  • यदि वे असफल होते हैं, तो आप केवल इतना जानते हैं कि यह 500'000 लाइनों के कोड में निष्पादित किया गया था।

तो टीडीडी के लिए, आप बीन्स बनाने की कोशिश करते हैं जिसे आप वसंत के बिना बना सकते हैं। उन्हें इस तरह से लिखें कि आपको हाइबरनेट या डेटाबेस शुरू करने की आवश्यकता नहीं है। यहां मुख्य कारण यह है कि टीडीडी को प्रत्येक दिन सैकड़ों बार यूनिट परीक्षण चलाने की आवश्यकता होती है। यदि वे 10 सेकंड से अधिक समय तक चलते हैं, तो आप अंततः महसूस करेंगे कि आप परीक्षण समाप्त होने के लिए अपना समय बर्बाद कर रहे हैं।

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

FooDao तारों के बजाए, IFooDao तार करें जिसमें byId() विधि है और POJO लौटाता है। यूनिट परीक्षणों में, आप एक नकली कार्यान्वयन बना सकते हैं जो एक एकल उदाहरण देता है।

जब आप जानना चाहते हैं कि वास्तविक FooDao काम करता है, तो उसके लिए एकीकरण परीक्षण लिखें जो byId() कुछ बार कॉल करता है।

लेकिन "डीएओ से ऑब्जेक्ट प्राप्त करें, प्रक्रिया ऑब्जेक्ट, फिर से डीएओ के साथ ऑब्जेक्ट सहेजें" से बचें। ये तीन अलग-अलग परीक्षण हैं (दो आईटी, एक यूटी)।

+0

तो, उदाहरण के लिए आप परीक्षण के साथ शुरू करने के लिए उदाहरण के लिए सुझाव देते हैं, जो कहता है, नियंत्रक जो उदाहरण के लिए कुछ अन्य सेवा कहता है, अन्य सेवा का मज़ाक उड़ाता है, फिर उस सेवा का परीक्षण करने के लिए एक नया परीक्षण लिखें और तब तक अपना लक्ष्य हासिल किया? –

+0

हां। टीडीडी के सबसे महत्वपूर्ण मूल मूल्यों में से एक "छोटे कदम" है। जब एक परीक्षण कोड की 100 से अधिक पंक्तियों को निष्पादित करता है, तो यह शायद ही कभी "छोटा कदम" होता है। –

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