2012-07-19 13 views
6

कक्षा के लिए एक बार शुरू करें प्रत्येक परीक्षा के लिए कक्षा आरंभ होने के लिए कहा जाता है। मुझे लगता है कि ऐसा इसलिए है क्योंकि प्रत्येक परीक्षा के लिए वास्तव में एक नई कक्षा बनाई जाती है।एमएसटीएस्ट क्लास पूरी कक्षा

क्यों? हर दूसरे ढांचे यह नहीं करता है!

वैसे भी ... मुझे कक्षा में एक विधि (स्थैतिक नहीं) निष्पादित करने की आवश्यकता है। मुझे कक्षा के उसी उदाहरण के भीतर सभी परीक्षण विधियों को निष्पादित करने की भी आवश्यकता है।

क्या मैं एक पैडल के बिना एक क्रीक हूँ?

+0

कुछ कारण आप केवल एक को कॉल नहीं कर सकते हैं, फिर दूसरे को कॉल करें? – Wug

+1

सभी एक परीक्षण के भीतर? मैं ऐसा कर सकता था, लेकिन मैं तुरंत दृश्यता खो देता था जिसमें परीक्षण विफल हो गए थे। "ऑलटेस्ट" नामक एक परीक्षण? –

उत्तर

15

ClassInitialize को TestMethod एस में से किसी भी से पहले एमएसटीएस्ट द्वारा एक बार बुलाया जाता है, here टिप्पणियां देखें। प्रत्येक परीक्षण विधि से पहले TestInitialize को एक बार बुलाया जाता है। एमएसटीएस्ट प्रत्येक TestMethod कॉल के लिए टेस्ट क्लास का एक नया उदाहरण बनाता है। यही कारण है कि ClassInitialize एक स्थिर विधि है।

मुझे कक्षा में एक विधि (स्थैतिक नहीं) निष्पादित करने की आवश्यकता है। मुझे कक्षा के उसी उदाहरण के भीतर सभी परीक्षण विधियों को निष्पादित करने की भी आवश्यकता है।

क्या आपका मतलब है कि आपको या कक्षा के तहत कक्षा (वास्तव में आप जिस कक्षा का परीक्षण कर रहे हैं) पर एक विधि निष्पादित करने की आवश्यकता है?

किसी भी मामले में, आप TestClass में एक स्थिर सदस्य हो सकते हैं और इसे ClassInitialize में एक बार प्रारंभ कर सकते हैं। यह केवल एक बार बनाया जाएगा और आपके परीक्षणों के जीवनकाल के लिए मौजूद होगा। आप केवल एक बार एक विधि का आह्वान कर सकते हैं। फिर आप अपने प्रत्येक परीक्षण विधियों में इस एकल उदाहरण का उपयोग कर सकते हैं।

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

आवश्यकता है कि सभी विधियों को एक ही उदाहरण पर निष्पादित किया जाना आवश्यक है। शायद इस बाधा को खत्म करने के लिए अपने कोड को दोबारा करने का एक तरीका है?

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