मैं एक ऐसी विधि का परीक्षण कर रहा हूं, जो डेटा ऑब्जेक्ट का एक संग्रह उत्पन्न करने के लिए है। मैं यह सत्यापित करना चाहता हूं कि वस्तुओं के गुणों को सही ढंग से सेट किया जा रहा है। कुछ गुणों को एक ही चीज़ पर सेट किया जाएगा; दूसरों को एक मूल्य पर सेट किया जाएगा जो संग्रह में उनकी स्थिति पर निर्भर है। ऐसा करने का स्वाभाविक तरीका लूप के साथ लगता है। हालांकि, रॉय ओशेरोव यूनिट परीक्षणों ( आर्ट ऑफ यूनिट टेस्टिंग , 178) में तर्क का उपयोग करने के खिलाफ दृढ़ता से सलाह देते हैं । वह कहता है:
एक परीक्षण जिसमें तर्क होता है, आमतौर पर एक समय में एक से अधिक चीजों का परीक्षण होता है, जिसकी अनुशंसा नहीं की जाती है, क्योंकि परीक्षण कम पठनीय और अधिक नाजुक होता है। लेकिन परीक्षण तर्क भी जटिलता जोड़ता है जिसमें एक छिपा हुआ बग हो सकता है।
टेस्ट, एक सामान्य नियम के रूप में, विधि नियंत्रणों की एक श्रृंखला होनी चाहिए जिसमें कोई नियंत्रण प्रवाह न हो
try-catch
, यहां तक कि और न ही मुखर कॉल के साथ।
हालाँकि, मैं अपने डिज़ाइन में कुछ भी गलत नहीं देख सकता (आप डेटा ऑब्जेक्ट्स की एक सूची कैसे बनाते हैं, जिनके कुछ मान इस पर निर्भर हैं कि वे इस क्रम में कहाँ हैं? - बिल्कुल उत्पन्न नहीं करेंगे और उन्हें अलग से परीक्षण करेंगे)। क्या मेरे डिजाइन के साथ कुछ गैर-परीक्षण-अनुकूल है? या फिर ओशेरोव के शिक्षण के लिए बहुत कठोर रूप से समर्पित किया जा रहा है? या वहाँ कुछ गुप्त इकाई परीक्षण जादू है कि मुझे इस समस्या के बारे में पता नहीं है? (मैं C # / VS2010 / NUnit में लिख रहा हूं, लेकिन यदि भाषा-अज्ञेय उत्तर की तलाश कर रहे हैं)।
in
) बनाने के लिए, यदि परीक्षण "फ्रोब को सफलतापूर्वक एक मौजूदा संग्रह में जोड़ा गया था"।
toString()
कलेक्शन करता हूं और इसकी तुलना होनी चाहिए। सरल और काम करता है।