मेरे पास एक विधि है जो मैं इसे हालांकि, इकाई परीक्षण मुझे बनाने एक क्या कोई भी दस्तावेज़ीकरण या संसाधन है जो कि हम विजुअल स्टूडियो 2012 - अपडेट 2 का उपयोग कर रहे हैं। उदाहरण के लिए, BitmapImage लेता है।
BitmapImage को बनाकर या लोड करके परीक्षण करने का प्रयास कर रहा हूं और फिर इसे विधि कहा गया है।
bitmapimage की अनुमति नहीं देता है, यह एक
InvalidCrossThreadException ।
बिटमैप इमेज में
विंडोज फोन 8 लेते हैं।
बिटमैप इमेज केवल UI थ्रेड पर चला सकता है, और यूनिट टेस्ट पृष्ठभूमि थ्रेड से चल रहा है। यही कारण है कि आपको यह अपवाद मिल रहा है
BitmapImage या अन्य यूआई घटक से युक्त किसी भी परीक्षण के लिए आपको इसकी आवश्यकता होगी:
Dispatcher.BeginInvoke () का उपयोग करके पुश करें। < / Code>
ManualResetEvent (semaphore) का उपयोग करके क्रॉस-थ्रेड सिग्नल करना, और यह सुनिश्चित करने के लिए कि किसी भी (पकड़ने योग्य) अपवाद टेस्ट थ्रेड पर वापस पास किए गए हैं ...
[TestMethod] सार्वजनिक शून्य TestMethod1 () {ManualResetEvent mre = new ManualResetEvent (असत्य); अपवाद uiThreadException = नल; Deployment.Current.Dispatcher.BeginInvoke (() = & gt; {{bitmapImage bi = new bitmapImage (); // अधिक सामान // यूआई थ्रेड में एक अपवाद अनुकरण करते हैं // नए अवैधऑपरेशन अपवाद ("हा!") फेंकें; } पकड़ (अपवाद ई) {uiThreadException = ई;} // पूरा संकेत के रूप में संकेत.सेट ();}); // बाउल पूरा करने के लिए यूआई थ्रेड पर ऑपरेशन के लिए अधिकतम 1 सेकंड प्रतीक्षा करें = mre.WaitOne (1000); यदि (! पूरा) {नया अपवाद फेंक ("UI थ्रेड समय में पूरा नहीं हुआ"); } // यूआई थ्रेड से अपवाद को फिर से हटाएं यदि (ui टाईब्रेक अपवाद! = नल) {फेंक यूटीथ्रेडएक्सेप्शन; }}
No comments:
Post a Comment