इसका मतलब है कि या तो:
- आपने उत्पादन कोड लिखा था जो परीक्षण को पहले लिखे बिना आप चाहते हैं कि सुविधा को पूरा करता है ("धार्मिक TDD" का उल्लंघन), या
- आपको जिस सुविधा की आवश्यकता होती है, वह उत्पादन कोड द्वारा पहले ही पूरी हो जाती है, और आप उस सुविधा को कवर करने के लिए एक और इकाई परीक्षण लिख रहे हैं।
बाद की स्थिति आपके विचार से अधिक सामान्य है। एक पूरी तरह से विशिष्ट और तुच्छ (लेकिन अभी भी उदाहरण के रूप में) उदाहरण के लिए, मान लें कि आपने निम्नलिखित इकाई परीक्षण (स्यूडोकोड, क्योंकि मैं आलसी हूँ) लिखा है:
public void TestAddMethod()
{
Assert.IsTrue(Add(2,3) == 5);
}
क्योंकि आपको वास्तव में केवल 2 और 3 का परिणाम एक साथ जोड़ा जाना चाहिए।
आपका कार्यान्वयन तरीका होगा:
public int add(int x, int y)
{
return x + y;
}
लेकिन मान लीजिए कि मुझे अब 4 और 6 को एक साथ जोड़ने की आवश्यकता है:
public void TestAddMethod2()
{
Assert.IsTrue(Add(4,6) == 10);
}
मुझे अपने तरीके को फिर से लिखने की ज़रूरत नहीं है, क्योंकि यह पहले से ही दूसरे मामले को कवर करता है।
अब कहते हैं कि मुझे पता चला है कि मेरे ऐड फंक्शन को वास्तव में एक नंबर को वापस करने की आवश्यकता है जिसमें कुछ सीलिंग है, चलो 100 कहते हैं। मैं एक नया तरीका लिख सकता हूं जो यह परीक्षण करता है:
public void TestAddMethod3()
{
Assert.IsTrue(Add(100,100) == 100);
}
और यह परीक्षण अब विफल हो जाएगा। मुझे अब अपने कार्य को फिर से लिखना होगा
public int add(int x, int y)
{
var a = x + y;
return a > 100 ? 100 : a;
}
इसे पास करने के लिए।
सामान्य ज्ञान यह बताता है कि यदि
public void TestAddMethod2()
{
Assert.IsTrue(Add(4,6) == 10);
}
पास करता है, तो आप जानबूझकर अपनी पद्धति को विफल नहीं बनाते हैं ताकि आपके पास एक असफल परीक्षा हो सके ताकि आप इस परीक्षा को पास करने के लिए नया कोड लिख सकें।