यह इस उदाहरण के रूप में स्ट्रिंग पैरामीटर के साथ तरीकों कि के खिलाफ शून्य या खाली मान्य किया जाना चाहिए, साथ वर्गों के लिए आम बात है:मुझे विधि में शून्य और/या खाली स्ट्रिंग पैरामीटर का परीक्षण कैसे करना चाहिए?
public class MyClass {
public void MyMethod(string param){
if(string.IsNullOrEmpty(param)){
throw new ArgumentNullException(...);
}
//...
}
}
ऐसा नहीं है कि विधि के व्यवहार दोनों के लिए समान है स्पष्ट है (अवैध) मान। यह एक बहुत ही आम स्थिति है, और जब इन तरीकों का परीक्षण करने की बात आती है, तो मुझे हमेशा यह संदेह होता है कि इसे कैसे किया जाए। मैं हमेशा इन मामलों के लिए दो अलग-अलग परीक्षणों का निर्माण:
[TestClass]
public class Tests {
[TestMethod]
public void MyMethod_should_fail_if_param_is_null(){
//...
myclass.MyMethod(null);
//...
}
[TestMethod]
public void MyMethod_should_fail_if_param_is_empty(){
//...
myclass.MyMethod("");
//...
}
}
लेकिन मैं बहुत ज्यादा अतिरेक देखते हैं। वे परीक्षण बिल्कुल वही हैं, विधि में पारित पैरामीटर केवल अंतर ही है। इससे मुझे बहुत परेशान होता है, क्योंकि मुझे प्रत्येक स्ट्रिंग पैरामीटर के लिए दो टेस्ट बनाना पड़ता है। 3 पैरामीटर वाले एक विधि में पैरामीटर का परीक्षण करने के लिए केवल 6 परीक्षण होंगे।
मुझे लगता है कि यह उन मानकों का परीक्षण करने का सही तरीका है, लेकिन अगर मुझे पता है कि 99% स्ट्रिंग पैरामीटर एक ही तरीके से मान्य किए जाएंगे, तो बेहतर होगा कि उन्हें नल (या खाली) के लिए परीक्षण न करें और मान लें कि दूसरे मामले में व्यवहार वही होगा?
मैं जानना चाहता हूं कि आप इसके बारे में क्या सोचते हैं। मुझे पता है कि मैं जो पूछ रहा हूं वह तकनीकी प्रश्न की तुलना में अधिक तकनीकी राय है, लेकिन मुझे लगता है कि परीक्षण समुदाय के पास इस स्थिति के बारे में कुछ दिलचस्प कहना पड़ सकता है।
धन्यवाद!
अपने त्वरित प्रतिक्रिया के लिए धन्यवाद का उपयोग कर सकते हैं! मैंने पहले ही एक्सपेक्ट अपवाद का अपना संस्करण बनाया है (आप इसे यहां देख सकते हैं http://gerardocontijoch.wordpress.com/2008/12/02/uso-de-expectedexceptionattribute-para-testear-excepciones/), और इसका उपयोग करें ऐसे मामलों में। इसके बिना नहीं रह सकता: पी मुझे आपके द्वारा प्रस्तावित समाधान पसंद है, मैंने इसके बारे में सोचा, लेकिन जैसा कि आपने कहा था, "यह यूनिट परीक्षण के सामान्य सिद्धांत का पालन नहीं करता है" और मैं केवल इसका पालन करना चाहता था, आपको पता है , अच्छे प्रथाओं के लिए उपयोग करें। मैं शायद इस समाधान के लिए सभी के बाद जाऊंगा। चलो देखते हैं कि अन्य क्या सोचते हैं ... –
बात यह है कि मुझे विश्वास नहीं है कि कुत्ते के बाद और खिड़की से व्यावहारिकता फेंकना * एक अच्छा अभ्यास है :) यह * ज्ञान * को जानने के लायक है, लेकिन फिर जागरूक रूप से इसे अनदेखा करते समय किसी विशेष स्थिति के लिए पेशेवरों और विपक्षों का वजन कम किया है और इसे काम नहीं किया है। –
मैं पूरी तरह से आपसे सहमत हूं और यही कारण है कि मेरे प्रश्न का कारण था। मुझे एक निश्चित "अच्छा" अभ्यास का पालन करने का विपक्ष मिला, लेकिन कई पेशेवर नहीं (एक विरोधाभास, पेशेवरों की तुलना में अधिक विपक्ष के साथ एक अच्छा अभ्यास), इसलिए मैंने यह देखने के लिए एक प्रश्न पोस्ट किया कि क्या मुझे कुछ याद आ रहा था या नहीं। –