2016-10-10 9 views
13

मैं एक ऐसी विधि का परीक्षण कर रहा हूं जो संग्रह को कुशल बनाता है। पैरामीटर के एक सेट को देखते हुए इसमें एक तत्व होना चाहिए जो किसी शर्त से मेल खाता हो। संपादित करें: संग्रह में कई अन्य तत्व हो सकते हैं जो इस स्थिति से मेल नहीं खाते हैं।एक आर्ट के रूप में एकल का उपयोग एक बुरा अभ्यास है?

मैं उस व्यवहार का परीक्षण करने के लिए Single का उपयोग कर रहा हूं, जो ठीक काम करता है, क्योंकि यह एक अपवाद फेंकने से परीक्षण में विफल हो जाएगा यदि कोई मिलान या एक से अधिक मैच में कोई मिलान नहीं है। लेकिन कोई वास्तविक दावा नहीं है, जो किसी भी तरह रेंज, सीटी, एसएसर्ट का उल्लंघन करता है। तो मैं सोच रहा हूं कि यह एक बुरा अभ्यास है और यदि ऐसा करने का एक बेहतर तरीका है।

[TestMethod] 
public void TestMethod() 
{ 
    List list = MethodToTest(param1, param2); 

    list.Single(s => s.Matches(condition)); 

    //No actual Assert 
} 
+3

मुझे लगता है कि जोर बेहतर है, कम से कम क्योंकि आप और कहां विफल होने के बारे में अधिक जानकारीपूर्ण संदेश प्रदान कर सकते हैं। – Evk

+1

यह एक राय आधारित प्रश्न है ... मेरी राय में मैं सत्यापित करने के लिए 'एकल' का उपयोग नहीं करता हूं कि यूटी में केवल 1 आइटम है ... मैं 'Assert.Equal (1, list.Count (। ..)) ' –

+0

मैं सोच रहा हूं कि 'सिंगलऑर्डफॉल्ट' का उपयोग यहां किया जा सकता है। फिर आप दावा कर सकते हैं कि वापस लौटाया गया आइटम शून्य नहीं है। – Jon

उत्तर

16

मैं अगर यह एक बुरा व्यवहार है सोच रहा हूँ और अगर वहाँ यह करने के लिए एक बेहतर तरीका है:

बाद छद्म कोड मेरे सवाल का प्रदर्शन करने के लिए।

हाँ और हाँ।

यदि कोई मैच या एक से अधिक मैच में कोई मिलान नहीं है तो यह अपवाद फेंककर परीक्षण में विफल हो जाएगा।

अपवाद फेंककर परीक्षण में विफल न करें। परीक्षण में विफल होने से परीक्षण में विफल हो जाएं। आपके परीक्षण ढांचे में परीक्षण द्वारा परीक्षण की जा रही स्थिति पर जोर देने के लिए एक तंत्र है। आपने यह परीक्षण ढांचा खरीदा है, और अब आप इसकी सुविधाओं का उपयोग कर विरोध कर रहे हैं। टेस्ट फ्रेमवर्क का उपयोग करें क्योंकि इसे इस्तेमाल करने के लिए डिज़ाइन किया गया था, या, यदि आपको यह पसंद नहीं है, तो इसे छोड़ दें और एक बेहतर फ्रेमवर्क चुनें जिसे आप बेहतर पसंद करते हैं। लेकिन इसके तंत्र के चारों ओर अंत-रन मत करो।

अप्रत्याशित अपवाद आवश्यक नहीं हैं परीक्षण विफलताओं; वे बग्गी परीक्षण हो सकते हैं। आपको अंतर बताने में सक्षम होना चाहिए। जिस तरह से आप बताते हैं वह है: यदि अपवाद परीक्षण के तहत कोड में उत्पन्न होता है, तो यह कोड में एक बग है। यदि यह परीक्षण कोड में उत्पन्न होता है, तो यह परीक्षण में एक बग है। और अब आप परीक्षण कोड फेंक कर परीक्षण के तहत कोड में एक बग का पता लगाते हैं। और अब यह कहना मुश्किल है कि बग कहां है। अपने भविष्य को स्वयं को इतना कठिन मत समझो; आश्चर्यजनक कोड न लिखें जो जानबूझकर परीक्षण मंच के सम्मेलनों से बचाता है।

+0

आपके उत्तर के लिए धन्यवाद। आप सही हैं मैंने असफल परीक्षण और एक छोटी गाड़ी परीक्षण के बीच के अंतर के बारे में सोचा नहीं था। – Phonolog

संबंधित मुद्दे

 संबंधित मुद्दे