मैं TDD के लिए काफी नया हूं और किसी भी कार्यान्वयन कोड से पहले अपना पहला परीक्षण बनाते समय मुझे परेशानी होती है। कार्यान्वयन कोड के किसी भी ढांचे के बिना मैं अपना पहला परीक्षण लिखने के लिए स्वतंत्र हूं, हालांकि मैं चाहता हूं, लेकिन यह हमेशा मेरे जावा / ओओ द्वारा समस्या के बारे में सोचने के तरीके से बाहर आता है।
उदाहरण के लिए मेरे गितुब ConwaysGameOfLife में पहला परीक्षण जो मैंने लिखा था (नियम 1_zeroNeighbours) मैंने एक GameOfLife ऑब्जेक्ट बनाकर शुरू किया था जो अभी तक लागू नहीं हुआ था; एक सेट विधि कहा जाता है कि मौजूद नहीं था, एक कदम विधि है कि मौजूद नहीं था, एक विधि है कि मौजूद नहीं था, और फिर एक जोर का इस्तेमाल किया।
जैसे-जैसे मैंने और अधिक परीक्षण लिखे और रिफलेक्ट किए गए, वैसे-वैसे परीक्षण विकसित हुए, लेकिन मूल रूप से यह कुछ इस तरह दिखता था:
@Test
public void rule1_zeroNeighbours()
{
GameOfLife gameOfLife = new GameOfLife();
gameOfLife.set(1, 1, true);
gameOfLife.step();
assertEquals(false, gameOfLife.get(1, 1));
}
यह मुझे अजीब लगा क्योंकि मैं इस शुरुआती परीक्षण को लिखने के लिए इस प्रारंभिक चरण में कैसे निर्णय लिया था, इसके आधार पर कार्यान्वयन के डिजाइन को मजबूर कर रहा था।
जिस तरह से आप समझते हैं कि टीडीडी यह ठीक है? मुझे लगता है कि इसमें TDD / XP के सिद्धांतों का पालन किया जा रहा है, मेरे परीक्षण और कार्यान्वयन समय के साथ-साथ रिफलेक्टरिंग के साथ विकसित हुए हैं, और इसलिए यदि यह प्रारंभिक डिजाइन बेकार साबित हो गया होता तो यह बदलने के लिए खुला होता, लेकिन ऐसा लगता है कि मैं एक दिशा को मजबूर कर रहा हूं इस तरह से शुरू करके समाधान।
लोग TDD का उपयोग कैसे करते हैं? मैं कोई GameOfLife ऑब्जेक्ट, केवल आदिम और स्थिर तरीकों के साथ शुरू करके रिफैक्टरिंग के अधिक पुनरावृत्ति के माध्यम से जा सकता था, लेकिन ऐसा लगता है कि बहुत अधिक विवादित है।