ClassInitialize
को TestMethod
एस में से किसी भी से पहले एमएसटीएस्ट द्वारा एक बार बुलाया जाता है, here टिप्पणियां देखें। प्रत्येक परीक्षण विधि से पहले TestInitialize
को एक बार बुलाया जाता है। एमएसटीएस्ट प्रत्येक TestMethod
कॉल के लिए टेस्ट क्लास का एक नया उदाहरण बनाता है। यही कारण है कि ClassInitialize
एक स्थिर विधि है।
मुझे कक्षा में एक विधि (स्थैतिक नहीं) निष्पादित करने की आवश्यकता है। मुझे कक्षा के उसी उदाहरण के भीतर सभी परीक्षण विधियों को निष्पादित करने की भी आवश्यकता है।
क्या आपका मतलब है कि आपको या कक्षा के तहत कक्षा (वास्तव में आप जिस कक्षा का परीक्षण कर रहे हैं) पर एक विधि निष्पादित करने की आवश्यकता है?
किसी भी मामले में, आप TestClass
में एक स्थिर सदस्य हो सकते हैं और इसे ClassInitialize
में एक बार प्रारंभ कर सकते हैं। यह केवल एक बार बनाया जाएगा और आपके परीक्षणों के जीवनकाल के लिए मौजूद होगा। आप केवल एक बार एक विधि का आह्वान कर सकते हैं। फिर आप अपने प्रत्येक परीक्षण विधियों में इस एकल उदाहरण का उपयोग कर सकते हैं।
एक बात यह जानना है कि एमएसटीएस्ट विभिन्न वर्गों से परीक्षणों को अंतःस्थापित कर सकता है। तो यदि आपके पास कोई वैश्विक परिवर्तनीय स्थिति है जिसे एक से अधिक ClassInitialize
(या उस मामले के लिए परीक्षण) से एक्सेस किया गया है, तो अप्रत्याशित चीजें हो सकती हैं। इसी कारण से, सांख्यिकी से बचा जाता है।
आवश्यकता है कि सभी विधियों को एक ही उदाहरण पर निष्पादित किया जाना आवश्यक है। शायद इस बाधा को खत्म करने के लिए अपने कोड को दोबारा करने का एक तरीका है?
स्रोत
2012-07-19 22:55:33
कुछ कारण आप केवल एक को कॉल नहीं कर सकते हैं, फिर दूसरे को कॉल करें? – Wug
सभी एक परीक्षण के भीतर? मैं ऐसा कर सकता था, लेकिन मैं तुरंत दृश्यता खो देता था जिसमें परीक्षण विफल हो गए थे। "ऑलटेस्ट" नामक एक परीक्षण? –