2010-08-02 14 views
11

सिल्वरलाइट यूनिट परीक्षण फ्रेमवर्क के लिए Specflow साथ Async हैंडलिंग (Microsoft.Silverlight.Testing.SilverlightTest से परीक्षण वर्ग निकाले जाते हैं, अतुल्यकालिक विशेषता जोड़ने, EnqueueXXX तरीकों का उपयोग करें।) Async कॉल के साथ काम कर जुदाई कि प्रस्तुत SpecFlow को ध्यान में रखते के लिए एक प्रक्रिया को परिभाषित करता है टेस्ट क्लास और चरणों के बीच:सिल्वरलाइट

  • क्या इन उपकरणों को सिल्वरलाइट विधि कॉल पर प्रतीक्षा करने के लिए लाया जा सकता है जो असीमित रूप से व्यवहार करते हैं (जैसे वेब सेवा कॉल करना)?
  • यदि वे नहीं कर सकते हैं, तो इस व्यवहार को SpecFlow परीक्षण फ़ाइलों में संभालने के लिए मार्गदर्शन क्या है? (शायद एक AutoResetEvent है कि एक घटना हैंडलर में फिसल जाता है का उपयोग करें और उस पर इंतजार?)

उत्तर

1

मैं हर किसी को देखा और upvoted इस सवाल का एक भयानक, सुंदर जवाब के लिए किसी के लिए इंतजार कर रहा है है लगता है, लेकिन यह ऐसा नहीं लगता कि यह यहां होगा।

AutoResetEvent MyAutoReset = new AutoResetEvent(); 
[TestMethod] 
public void MyTestMethod() 
{ 
    var MyItem.GetItem(x => 
     { 
     // Return handler 
     MyAutoReset.Set(); 
     }); 
    MyAutoReset.WaitOne(5000, false)); 
} 

जाहिर है कुछ हैं: जो दूसरों एक प्रयोग करने योग्य जवाब अब जरूरत है ... मदद करने के लिए

क्या मैं अन्य इकाई परीक्षण स्थितियों के साथ किया है जैसे आप प्रश्न में उल्लेख किया है एक AutoResetEvent का उपयोग करें इस दृष्टिकोण के साथ विचार करने के लिए चीजें, लेकिन यह विचार पूरे हो जाता है।

+0

जेसन अपडेट के लिए धन्यवाद। जाहिर है, यह कुछ समय हो गया है क्योंकि इसे शुरू में पोस्ट किया गया था। मुझे इसे एक उत्तर के रूप में चिह्नित करने में प्रसन्नता होगी जब मुझे इस कोड को SpecFlow- मूल परीक्षण में लागू करने के लिए कुछ समय मिल सकता है। साथ ही, मैं सोच रहा हूं कि नया असिन सीटीपी समस्या पर सहन करने के लिए कुछ भी लाएगा या नहीं। – avidgator

2

ऑटोरेटेवेंट का उपयोग करना काम नहीं करेगा क्योंकि WaitOne कॉल UI थ्रेड को अवरुद्ध कर देगा। सिल्वरलाइट डेटा सेवाओं में एसिंक कॉल करते समय भी यूआई थ्रेड का उपयोग करता है (इस पोस्ट को देखें - Thead is blocked using WebClient and ManualResetEvent) तो वेटऑन वास्तव में सेवा को कॉल करने से रोक देगा।

1

मुझे पता है कि यह शायद देर से है लेकिन यहां जाता है।

Silverlight async के लिए आप Specflow AsyncContext एपीआई

https://github.com/techtalk/SpecFlow/wiki/Testing-Silverlight-Asynchronous-Code

जब यह यहां विकसित किया जा रहा

http://rburnham.wordpress.com/2011/05/13/testing-silverlight-asynchronous-code-with-specflow/

यह अवधारणा समझाने के लिए मदद करता है मैं इस बारे में भी ब्लॉग का उपयोग कर सकते कहता है।