2012-06-16 11 views
19

सुनिश्चित नहीं हैं कि इस एक ज्ञात समस्या है के लिए Async यूनिट टेस्ट दिखाई नहीं देता। मैं वीएस2012 आरसी (अल्टीमेट), और विन 8 रिलीज पूर्वावलोकन का उपयोग कर रहा हूं। मैंने एक यूनिट टेस्ट लाइब्रेरी (मेट्रो स्टाइल ऐप) बनाई है, और एक यूनिट टेस्ट लिखा है, जिसमें एसिंक/प्रतीक्षा कीवर्ड शामिल हैं। हालांकि जब मैं यूनिट टेस्ट प्रोजेक्ट संकलित करता हूं, यूनिट टेस्ट एक्सप्लोरर मैंने जो टेस्ट लिखा है, वह प्रदर्शित नहीं करता है। यदि मैं एसिंक/प्रतीक्षा कीवर्ड को बहिष्कृत करता हूं, तो यूनिट टेस्ट एक्सप्लोरर अभी मैंने लिखा टेस्ट में दिखाया गया है। क्या कोई इस से पहले आया है, या यह सिर्फ मुझे है?यूनिट टेस्ट एक्सप्लोरर मेट्रो क्षुधा

[TestClass] 
public class UnitTest1 
{ 
    [TestMethod] 
    public async void SomeAsyncTest() 
    { 
     var result = await StorageFile.GetFileFromPathAsync("some file path"); 
    } 
} 
+1

यदि आप विधि वापसी एक 'Task' तो क्या होगा? – svick

+0

यह दिलचस्प है। मुझे आश्चर्य है अगर MSTest गलत तरीके से वर्ग के भीतर तरीकों फ़िल्टर कर रही है या यदि async कीवर्ड हस्ताक्षर बदल यह प्रतिबिंब के माध्यम से प्रकट नहीं होता है ऐसा है कि। – bryanbcook

+0

svick, आप सही है। कार्य इसे यूटीई में दिखाता है। – Spock

उत्तर

28

यूनिट परीक्षण तरीकों कि async हैं Task, नहीं void वापस लौटाना होगा।

है ऐसा इसलिए है क्योंकि async void तरीकों पर नज़र रखने के लिए कड़ी मेहनत कर रहे हैं: वहाँ पता लगाने के लिए इकाई परीक्षण पुस्तकालय है कि परीक्षण पूरा करने के लिए कोई आसान तरीका है। (यह कठिन है, लेकिन मुझे लगता है कि यह असंभव नहीं है। आप एक कस्टम SynchronizationContext उपयोग करके ऐसा कर सकते हैं।)