तो क्या एकल-परीक्षण परीक्षण DRY का उल्लंघन करता है?
नहीं, लेकिन यह उल्लंघन को बढ़ावा देता है।
कहा कि, अच्छी वस्तु उन्मुख डिजाइन इकाई परीक्षणों के लिए खिड़की से बाहर जाने के लिए जाता है - ज्यादातर अच्छे कारण के लिए। यह अधिक महत्वपूर्ण है कि यूनिट परीक्षणों को एक दूसरे से अलग किया जाए ताकि परीक्षण को अलगाव में रखा जा सके और यदि आवश्यक हो, तो इस विश्वास के साथ तय किया जाए कि आप अन्य परीक्षणों को नहीं तोड़ते हैं। मूल रूप से परीक्षण की शुद्धता और पठनीयता उसके आकार या स्थिरता से अधिक महत्वपूर्ण है।
सच कहूं, तो मैं कभी भी आपके द्वारा बताए गए कारणों के लिए प्रति परीक्षण नियम का एक प्रशंसक नहीं रहा हूं: यह बहुत सारे बॉयलरप्लेट कोड की ओर जाता है जो पढ़ने में कठिन है, गलत-बोलेट्रिप के लिए आसान है, और यदि आप रिफ्लेक्टर करते हैं तो इसे ठीक करना मुश्किल है (जो आपको कम रिफैक्टर करने के लिए ड्राइव करता है)।
यदि किसी फ़ंक्शन को किसी दिए गए इनपुट के लिए "फू" और "बार" की एक सूची को वापस करना है, लेकिन किसी भी क्रम में यह जांचने के लिए दो का उपयोग करना पूरी तरह से ठीक है कि दोनों परिणाम सेट में हैं। जब आप परेशानी में पड़ते हैं, जब एक एकल परीक्षण दो इनपुट या दो साइड इफेक्ट की जाँच कर रहा होता है और आपको नहीं पता होता है कि दोनों में से कौन सा विफलता का कारण है।
मैं इसे सिंगल रिस्पॉन्सिबिलिटी प्रिंसिपल पर एक बदलाव के रूप में देखता हूं: केवल एक चीज होनी चाहिए, जिससे एक टेस्ट फेल हो सकता है और एक आदर्श दुनिया में केवल एक टेस्ट में बदलाव होना चाहिए।
लेकिन अंत में यह एक व्यापार बंद है। क्या आप सभी कॉपी पेस्टी कोड को बनाए रखने के लिए अधिक समय बिताने की संभावना रखते हैं, या जब आप कई स्रोतों द्वारा परीक्षण को तोड़ा जा सकता है तो आप मूल कारणों का शिकार करने में अधिक समय व्यतीत करेंगे। जब तक आप लिखते हैं -some- परीक्षण, यह शायद बहुत ज्यादा मायने नहीं रखता है। एकल-परख परीक्षणों के लिए मेरे तिरस्कार के बावजूद, मैं और अधिक परीक्षणों के पक्ष में गलती करता हूं। आपकी माइलेज भिन्न हो सकती है।