2008-12-29 6 views
16

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

मैं इस विधि के साथ बहुत सफल रहा हूं लेकिन सोच रहा हूं कि शायद पहले टेस्ट लिखने के लिए स्विच करना फायदेमंद होगा?

+0

देखें [क्या आप वास्तव में उपयोग कर रहे हैं?] (Http://stackoverflow.com/questions/286587/are-you-really-using-unit-tests) – nawfal

उत्तर

35

जब भी संभव हो मैं एक शुद्ध TDD दृष्टिकोण पालन करने की कोशिश:

  1. लिखने इकाई परीक्षण की सुविधा के लिए विकसित किया जा रहा ; इस बलों मुझे सार्वजनिक इंटरफ़ेस (रों)
  2. कोड सुविधा जल्द से जल्द फैसला करने की (संभव के रूप में आसान है, लेकिन आसान नहीं)
  3. सही/refactor/जांचना
  4. अतिरिक्त परीक्षण अगर बेहतर कवरेज के लिए आवश्यक है, असाधारण पथ, आदि [दुर्लभ लेकिन लायक विचार] अगली फीचर के साथ
  5. दोहराने

यह उत्साहित करने और पहली फीचर कोडिंग शुरू करने के लिए आसान है, लेकिन इस बार मतलब है कि आप सभी के माध्यम से लगता है कि नहीं होगा कि अग्रिम में सार्वजनिक इंटरफेस।

संपादित करें: ध्यान दें कि यदि आप पहले कोड लिखते हैं, तो अनजाने में अन्य तरीकों के बजाय कोड के अनुरूप परीक्षण लिखना आसान है!

+0

@Steven - यह आसानी से है यहां सबसे अच्छा जवाब है। – tvanfosson

+0

केंट बेक की किताब, टेस्ट-ड्राइव डेवलपमेंट, टीडीडी का सबसे अच्छा अवलोकन है। – Todd

+2

आपको पहले सभी यूनिट परीक्षण लिखना नहीं है। विफलता प्राप्त करने के लिए केवल एक यूनिट परीक्षण लिखें, फिर इसे पास करने के लिए पर्याप्त उत्पादन कोड, फिर (यदि आवश्यक हो) दोनों रिफैक्टर। यह आपके द्वारा यहां निर्दिष्ट की तुलना में एक बहुत कठिन लूप होना चाहिए। –

1

हम उन्हें हाथ से पहले कोशिश करते हैं और लिखते हैं, लेकिन मैं पूरी तरह से स्वीकार करूंगा कि हमारा पर्यावरण कई बार अराजक होता है, और कभी-कभी यह कदम बाद में पारित हो जाता है और बाद में लिखा जाता है।

0

मैं आम तौर पर कोड लिखने से पहले लिखने वाले यूनिट परीक्षणों की एक सूची लिखता हूं, और वास्तव में यूनिट परीक्षणों को कोड करता हूं, लेकिन ऐसा इसलिए है क्योंकि मैं यूनिट टेस्ट स्टब्स उत्पन्न करने के लिए प्रोग्राम का उपयोग करता हूं और फिर उन्हें परीक्षण करने के लिए संशोधित करता हूं उचित मामले

12

मैं वास्तव में पहले कोड लिखने के लिए चाहता हूं, और अक्सर करता हूं। लेकिन जितना अधिक मैं असली टीडीडी करता हूं, जहां मैं किसी भी कोड को एक परीक्षण के साथ लिखने से इनकार करता हूं, मुझे लगता है कि मैं अधिक टेस्टेबल कोड और बेहतर कोड लिखता हूं।

तो, हाँ, पहले परीक्षण लिखें। यह इच्छाशक्ति और दृढ़ संकल्प लेता है, लेकिन यह वास्तव में बेहतर परिणाम पैदा करता है।

एक अतिरिक्त बोनस के रूप में, टीडीडी ने वास्तव में मुझे पर्यावरण में ध्यान केंद्रित करने में मदद की है।

0

मैं कोड लिखने के लिए यूनिट परीक्षण का उपयोग करता हूं क्योंकि मैं इसे लिख रहा हूं। इस तरह मैं एक ही समय में जो लिख रहा हूं उसका उपयोग कर रहा हूं, क्योंकि जब मैं इसे लिख रहा हूं, तो कोड परीक्षण करने के लिए यूनिट टेस्ट का उपयोग करता हूं। कंसोल ऐप की तरह बहुत कुछ होगा।

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

तो मेरा जवाब कुछ कोडिंग के बाद है।

0

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

अन्यथा, मैं कार्यात्मक स्तर के स्वीकृति परीक्षण लिखता हूं कि कोड संतुष्ट होगा।

यूनिट परीक्षणों को लिखने से पहले मुझे बिल्कुल "मैं कहां हूं" पता करने की अनुमति देता हूं: मुझे पता है कि अब तक कोडित किया गया है और इसे परीक्षण टीम में एकीकृत या भेजा जा सकता है; यह बग मुक्त नहीं है लेकिन यह काम करता है।

4

मैं एक टीडीडी दृष्टिकोण का पालन करता हूं, लेकिन मैं कुछ के रूप में एक शुद्धवादी नहीं हूं। आम तौर पर, मैं वर्ग/विधि में किसी स्टब के साथ किसी न किसी तरह का असर डालता हूं जो आसानी से एक NotImplementedException फेंकता है। तब मैं परीक्षा लिखना शुरू कर दूंगा। एक समय में एक सुविधा, एक समय में एक परीक्षण। अक्सर, मुझे पता चलेगा कि मैंने एक परीक्षण खो दिया है - शायद जब अन्य परीक्षण लिखते हैं या जब मुझे कोई बग मिलती है - तो मैं वापस जाऊंगा और एक परीक्षा लिखूंगा (और यदि आवश्यक हो तो बग फिक्स)।

टीडीडी का उपयोग करके आपका कोड YAGNI (आपको इसकी आवश्यकता नहीं होगी) के साथ लाइन में रखने में मदद करता है जब तक कि आप केवल उन सुविधाओं के लिए परीक्षण लिखते हैं जिन्हें आपको विकसित करने की आवश्यकता है और केवल सबसे सरल कोड लिखें जो आपके परीक्षणों को पूरा करेगा।

0

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

0

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

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