2013-02-15 10 views
5

मैं अपनी ओपन सोर्स प्रोजेक्ट्स में से एक के लिए एक ढीले टीडीडी वर्कफ़्लो का पालन करने की कोशिश कर रहा हूं। यह अन्य प्रोग्रामर का उपयोग करने के लिए एक एपीआई है।क्या मुझे संकलन करने से पहले परीक्षण लिखना चाहिए?

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

  1. परीक्षण जो संकलन नहीं होगा लिखें
  2. यह संकलन
  3. इसे हरी

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

Handles(string pattern); //had this one already 
Handles(IPatternMatcher pattern); //needed this one 

मैं विधि मेरी एपीआई के लिए जोड़ा का दूसरा रूप पाने के लिए की जरूरत है। तो, मैं एक मृत सरल परीक्षण के साथ समाप्त हुआ:

public void Handles_SupportsIPatternMatcher() 
{ 
    var api=new MyAPI(); 
    api.Handles(new TestPatternMatcher()); 
} 

जो लागू होने के बाद अपशिष्ट की तरह लगता है।

क्या मुझे इस वर्कफ़्लो का पालन करना जारी रखना चाहिए, या इसे सुधारने के तरीके हैं? मैं उन परीक्षणों को लिखने से कैसे रोकूं जो मूल रूप से केवल कंपाइलर त्रुटियों की जांच करते हैं? चूंकि यह सार्वजनिक रूप से उपभोग योग्य एपीआई है, इसलिए मुझे इस तरह के परीक्षणों के बारे में चिंता करनी चाहिए?

+1

"रेड-ग्रीन-रिफैक्टर" "कम्पाइल-कंपाइलस-ग्रीन" की तुलना में काफी बेहतर लगता है: पी –

+2

यह प्रोग्रामर.स्टैकएक्सएन्चेंज.com –

+1

@ सिमॉन व्हाइटहेड के लिए एक बहुत अच्छा सवाल है ... तकनीकी रूप से संकलक त्रुटि भी "लाल" के रूप में गिना जाता है :) – Earlz

उत्तर

1

मैं आप resharper का उपयोग करते हैं, आप खाली हैंडल विधि बना सकते हैं जो IPatternMatcher प्राप्त करेगा। टीडीडी शक्तिशाली चीज है, और आपको कोशिश करना जारी रखना चाहिए। कोड के बाद कोड और परीक्षण से पहले दोनों तरीकों से परीक्षण करने की कोशिश कर रहा था, और मैंने पाया कि कोड से पहले परीक्षण शक्तिशाली है। आप कोड त्रुटियों को बहुत कसकर डीबग कर सकते हैं। और परीक्षण वारंटी है कि आपका कोड काम करेगा जैसा आप उम्मीद करते हैं।

3

सं

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

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

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