2009-01-27 12 views
12

के लिए बेस क्लास का उपयोग करना विजुअल स्टूडियो .NET 2008 और एमएसटेस्ट मानते हैं यूनिट परीक्षण चलाने के लिए उपयोग किया जाता है। जब कोई सिस्टम किसी सेवा कंटेनर पर निर्भर होता है और निर्भरता इंजेक्शन इकाई परीक्षण स्वाभाविक रूप से सेवाओं की स्थापना की आवश्यकता होती है।इकाई परीक्षण सेटअप और टियरडाउन

क्या इन सेवाओं को बेस क्लास में स्थापित किया जाना चाहिए कि सभी यूनिट परीक्षण प्रत्येक यूनिट टेस्ट क्लास से या उससे प्राप्त होते हैं। यदि वे बेस क्लास में होना चाहिए, तो क्या TestInitialize और ClassInitialize विधियों को व्युत्पन्न कक्षा से कॉल करने की आवश्यकता के बिना निष्पादित किया जा सकता है, उदाहरण के आधार पर? प्रारंभ करें?

उत्तर

8

एमएसटीएस्ट फ्रेमवर्क Test* चिह्नित विधियों के लिए संपूर्ण ऑब्जेक्ट (सभी बेस क्लास) खोजेगा। जब आप उन्हें यूनिट टेस्ट क्लास पर घोषित करते हैं, तो आपको उन्हें स्पष्ट रूप से कॉल करने की आवश्यकता नहीं होती है।

+2

कक्षा * विधियों को हमेशा स्थैतिक के रूप में चिह्नित किया जाएगा और इसलिए व्युत्पन्न कक्षाओं से नहीं बुलाया जाएगा। टेस्ट * विधियों को बुलाया जाएगा क्योंकि वे उदाहरण विधियां हैं। – sduplooy

+0

आप सही हैं, उत्तर तय करें। –

0

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

5

2008 के साथ, आप [TestInitialize] एक आधार वर्ग पर है में सक्षम होना चाहिए, और जब तक आप नहीं जोड़ते हैं के रूप में एक और [TestInitialize] कहीं पदानुक्रम नीचे, यह कहा जाना चाहिए। आप वर्चुअल विधियों के साथ चीजें भी कर सकते हैं।

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