2012-01-01 9 views
6

सिल्वरलाइट यूनिट टेस्ट फ्रेमवर्क में एक [असिंक्रोनस] विशेषता (AsynchronousAttribute) है जो परीक्षणों को केवल तब समाप्त करने का कारण बनती है जब EnqueueTestComplete() को कॉल किया जाता है। यह उन परीक्षणों को लिखने का एक आसान तरीका है जो किसी घटना को समाप्त होने से पहले होने की प्रतीक्षा करने की आवश्यकता होती है। अब मैं उन लोगों में से एक पसंदीदा सामान्य उद्देश्य इकाई परीक्षण ढांचा चुनने की कोशिश कर रहा हूं जो सबसे लोकप्रिय विकल्प हैं - वीएसयूटीएफ, एनयूनीट, xUnit.NET, MbUnit और मैं सोच रहा था - आप इन ढांचे का उपयोग करके एसिंक्रोनस परीक्षण कैसे करेंगे?वीएसयूटीएफ, एनयूनीट, xUnit.NET, एमबीयूनीट बनाम एसयूटीएफ में असीमित परीक्षण?

मुझे लगता है मैं Monitor.Wait या ResetEventWaitOne करते हैं और इसे परीक्षा पद्धति के अंत में फोन करेगा कि कुछ कस्टम कोड बाहर बाहर रोल कर सकते हैं, तो एक पल्स करना/सेट जब परीक्षण खत्म हो गया है, लेकिन मैं अगर देख रहा था एक मौजूदा आम/अंतर्निहित समाधान है।

यह एक नमूना है कि यह एसयूटी में कैसे किया जाता है (http://smartypantscoding.com/a-cheat-sheet-for-unit-testing-silverlight-apps-on-windows-phone-7 से)।

[TestClass] 
public class AsyncTests : SilverlightTest 
{ 
    [Asynchronous] 
    [TestMethod] 
    public void AsyncAppendStringTest() 
    { 
     var appendStrings = new List<string>() { "hello", "there" }; 

     StringJoiner.AsyncAppendStringsWithDashes(appendStrings, (returnString) => 
      { 
       Assert.IsTrue(string.Compare(returnString, "hello-there") == 0); 
       EnqueueTestComplete(); 
      }); 
    } 
} 

उत्तर

1

दृश्य स्टूडियो अब परीक्षण जब async विधि पूरा करता async Task हस्ताक्षर और परीक्षण पूरा किया है कि समर्थन करता है।

0

क्रिस्टोफर Bennage इस के लिए एक दिलचस्प दृष्टिकोण, Caliburn माइक्रो से प्रेरित है:

http://devlicio.us/blogs/christopher_bennage/archive/2011/01/17/improving-asynchronous-tests-for-silverlight.aspx

+0

यह अभी भी सिल्वरलाइट यूनिट टेस्ट आधारित समाधान है जो मैं देख सकता था। अन्य, गैर-सिल्वरलाइट ढांचे के बारे में क्या? –

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