2010-08-16 7 views
6

तो, मैं यूनिट परीक्षण के लिए नया हूं, और पहले भी विकास के परीक्षण के लिए और भी बहुत कुछ। क्या यह मेरे लिए केवल एक ही assert.isTueue कथन है मेरे यूनिट परीक्षण में जहां मैं अपनी विधि और वैध पैरामीटर में पास करता हूं, और ज्ञात अच्छे उत्तर से इसकी तुलना करता हूं?क्या यह केवल एक जोरदार बयान के साथ यूनिट परीक्षण के लिए मान्य है?

विधि

public static string RemoveDash(string myNumber) 
    { 
     string cleanNumber = myNumber.Replace("-",""); 
     return cleanNumber; 
    } 

टेस्ट

[TestMethod()] 
    public void TestRemoveDash() 
    { 
     Assert.IsTrue(RemoveDash("50-00-0")=="50000"); 
    } 

उत्तर

10

यह सुंदर वैध अगर यह आपके विधि है, जो यह बहुत ज्यादा कर किया जा रहा है की कार्यक्षमता का परीक्षण करती है।

इसके बजाय यहां बराबर का उपयोग करने पर विचार कर सकते हैं, लेकिन इससे कोई फर्क नहीं पड़ता। साथ ही, मुझे पता है कि यह एक परीक्षण उदाहरण है, लेकिन हमेशा उन मामलों का परीक्षण करना सुनिश्चित करें जहां इनपुट अपेक्षित नहीं है, साथ ही जो भी अन्य वैध रूपों में आ सकता है (यह एक ही परीक्षण विधि या एक अलग हो सकता है आपकी वरीयता पर)

+1

इस मामले में Assert.Equals को प्राथमिकता देने का एक अन्य कारण यह है कि जब आप विफल हो जाते हैं तो आपको उपयोगी प्रतिक्रिया मिल जाएगी और इसे डीबग करने के बारे में सोचना नहीं होगा। (यानी, "अपेक्षित '50000' की तरह कुछ लेकिन" अनुमानित सत्य "की बजाय '5000-0' 'था लेकिन गलत था")। चीयर्स – Berryl

2

यह पूरी तरह से मान्य लगता है - हालांकि, उसी विधि के साथ उस विधि में कुछ अन्य परीक्षणों को शामिल क्यों न करें, लेकिन इसका परीक्षण करना RemoveDash("-") == "" और RemoveDash("-5") == "5" आदि?

+0

इनपुट विल के लिए धन्यवाद। भविष्य में लागू करने और याद रखने के लिए एक आसान परिवर्तन है। –

10

परीक्षकों कभी-कभी हमारे परीक्षण पढ़ते हैं इसलिए मैं उन्हें जितना संभव हो उतना संभव बनाने के लिए प्रयास करता हूं।

[TestMethod()] 
public void TestRemoveDash() 
{ 
    string expected = "50000"; 
    string actual = RemoveDash("50-00-0"); 
    Assert.AreEqual(expected,actual); 
} 
+0

धन्यवाद फ्लेचर। मैं देख सकता हूं कि यह कैसे पढ़ना आसान बनाता है। –

+1

+1 मैं इस छोटे से कुछ के लिए स्थानीय चर का उपयोग नहीं करता, लेकिन AssertEquals() या समकक्ष आमतौर पर सहायक होता है, क्योंकि यह परीक्षण विफलता पर दोनों मानों को प्रिंट करेगा (इसलिए) यह पता लगाना आसान है कि समस्या क्या है। –

6

केवल टिप्पणी Assert.IsTrue के बजाय Assert.AreEqual उपयोग करने के लिए है: मैं नहीं बल्कि एक जोर से, निम्न का उपयोग करना पसंद करेंगे

Assert.IsAreEqual("50000", RemoveDash("50-00-0")); 

कि कारण है कि परीक्षण में विफल रहते हैं आपको प्राप्त होने वाला त्रुटि संदेश क्या होता है और वास्तव में क्या हुआ था इसके बारे में अधिक वर्णनात्मक है। एक संदेश जो "अपेक्षित मान < 50000> कहता है लेकिन वास्तव में < 50-00-0>" अपेक्षित मान सत्य होने के मुकाबले बहुत बेहतर है, लेकिन गलत था। "

अंगूठे का एक नियम है, जब भी आप पाते हैं अपने आप को Assert.IsTrue उपयोग करते हैं, Assert तरीकों के माध्यम से जाना है और यदि आपके उम्मीद (जैसे Assert.IsInstanceOfType, Assert.IsNotNull, आदि) का परीक्षण करने के लिए एक बेहतर तरीका है देखने के लिए चाहते हैं के रूप में।

+0

आगे की जानकारी इगोर के लिए धन्यवाद! –

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