2014-07-01 8 views
10

मेरे पास कंसोल ऐप की मुख्य विधि इकाई परीक्षण पर एक प्रश्न है। मानक हस्ताक्षरसी # यूनिट परीक्षण (नुनिट) कंसोल ऐप की मुख्य विधि?

public static void Main(string[] args) 

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

मुझे नहीं लगता कि मैं इसे MOQ के साथ एक स्थैतिक विधि के रूप में मॉक कर सकता हूं।

किसी के पास इसका कोई अनुभव है?

कोई विचार?

धन्यवाद

+0

क्यों आप इसे उपहास करने के लिए की आवश्यकता होगी? क्या इसकी निर्भरताएं हैं जिन्हें नहीं कहा जा सकता है? –

+0

आपके मुख्य विधि के अंदर रन टाइम पर इनपुट की जांच की जानी चाहिए। आपके यूनिट परीक्षण के लिए यह महत्वपूर्ण क्यों है? – SBI

+0

भविष्य के पाठकों के लिए बस एक नोट: हस्ताक्षर को 'स्थिर int Main' में बदला जा सकता है और मैं कभी-कभी यूनिट परीक्षण बनाने के लिए उस रिटर्न सिग्नल का उपयोग करता हूं – Simeon

उत्तर

18

अपने परिदृश्य में उपहास करने के लिए कुछ भी नहीं है। स्टेटिक Program.Main किसी अन्य विधि के रूप में एक विधि है और आप इसका परीक्षण करके - इसका परीक्षण करते हैं।

static void विधि के साथ समस्या यह है कि आप केवल यह सत्यापित कर सकते हैं कि यह अपवाद फेंकता है या इनपुट तर्क (या अन्य स्थिर सदस्यों, अंततः) के साथ इंटरैक्ट करता है। चूंकि string[] पर बातचीत करने के लिए कुछ भी नहीं है, इसलिए आप पूर्व मामले का परीक्षण कर सकते हैं।

हालांकि, सभी तर्क को अलग करने के लिए Main में निहित तर्क और इसके बजाय परीक्षण करने के लिए एक और अधिक ध्वनि दृष्टिकोण है। इतना ही नहीं आप अपने इनपुट तर्क से निपटने तर्क अच्छी तरह से परीक्षण करने के लिए अनुमति देता है, लेकिन यह भी सरल Main कम या ज्यादा यह करने के लिए:

public static void Main(string[] args) 
{ 
    var bootstrapper = new Bootstrapper(); 
    bootstrapper.Start(args); 
} 
संबंधित मुद्दे