टीडीडी में कार्रवाई का सबसे अच्छा कोर्स क्या है यदि, तर्क को सही ढंग से लागू करने के बाद, परीक्षण अभी भी विफल रहता है (क्योंकि परीक्षण में कोई गलती है)?
उदाहरण के लिए, मान लें कि आप निम्नलिखित फ़ंक्शन को विकसित करना चाहते हैं:
int add(int a, int b) {
return a + b;
}
मान लीजिए कि हम इसे निम्नलिखित चरणों में विकसित करते हैं:
परीक्षण लिखें (अभी तक कोई कार्य नहीं):
// test1 Assert.assertEquals(5, add(2, 3));
संकलन त्रुटि में परिणाम।
डमी फ़ंक्शन कार्यान्वयन लिखें:
int add(int a, int b) { return 5; }
परिणाम:
test1
गुजरता है।एक और परीक्षण मामला जोड़ें:
// test2 -- notice the wrong expected value (should be 11)! Assert.assertEquals(12, add(5, 6));
परिणाम:
test2
विफल रहता है,test1
अभी भी गुजरता है।वास्तविक कार्यान्वयन लिखें:
int add(int a, int b) { return a + b; }
परिणाम:
test1
अभी भी गुजरता है,test2
अभी भी विफल रहता है (तब से11 != 12
)।
इस विशेष मामले में: क्या यह बेहतर होगा:
- सही
test2
, और देखें कि यह अब गुजरता है, या - कार्यान्वयन के नए हिस्से को हटाएं (यानी # चरण 2 से ऊपर जाएं), सही करें
test2
और इसे विफल होने दें, और फिर सही कार्यान्वयन (चरण # 4। ऊपर) को फिर से शुरू करें।
या कोई और, चतुर तरीका है?
जब मैं समझता हूं कि उदाहरण की समस्या बल्कि तुच्छ है, तो मुझे दिलचस्पी है कि मैं जेनेरिक मामले में क्या करूं, जो दो संख्याओं के जोड़ से अधिक जटिल हो सकता है।
EDIT (@Thomas Junk के जवाब के लिए):
इस सवाल का फोकस वही है जो इस तरह के मामले में टीडीडी सुझाव देता है, न कि अच्छे कोड या परीक्षण प्राप्त करने के लिए "सार्वभौमिक सार्वभौमिक अभ्यास" जो (टीडीडी-वे की तुलना में भिन्न हो सकता है)।