MSTest का उपयोग करके एक async कोड का परीक्षण कैसे किया जाता है


87

मैं कुछ सुपर सरल async कोड लिख रहा हूँ। बस एक फ़ाइल ऑफ-थ्रेड सहेज रहा है।

मैं Microsoft Visual Studio टीम सिस्टम 2008 में MSTest इकाई परीक्षण ढांचे का उपयोग करके इस कोड का परीक्षण करना चाहूंगा।

मैं यह कैसे करु?

जब तक विधि वापस नहीं आती मैं टेस्ट विधि को सरल करना चाहता हूं। मैं ऐसा करने के लिए कुछ तरीकों की कल्पना कर सकता हूं, लेकिन मुझे उड़ा दिया गया है कि इसके आसपास कोई सर्वोत्तम अभ्यास या सहायक कक्षाएं नहीं हैं।

मैं सिल्वरलाइट के लिए बहुत कुछ देखता हूं , लेकिन कुछ भी सामान्य नहीं है।


4
डुप्लिकेट? stackoverflow.com/questions/1174702/… (मुझे लगता है कि प्रदान किए गए उत्तर सीधे संबंधित नहीं हैं कि कौन से परीक्षण ढांचे का उपयोग किया जाता है)
फ्रेड्रिक मोर्क

1
हाँ, यह है - और जवाब वही होगा जो मुझे लगता है।
एंड्रास जोल्तान

जवाबों:


160

विजुअल स्टूडियो 2012 (जिसे पहले "विज़ुअल स्टूडियो 11" के रूप में जाना जाता था) ने एसिंक्स परीक्षणों के लिए समर्थन पेश किया था । यह इस तरह दिख रहा है:

[TestMethod]
public async Task FooTest()
{
   var result = await SomeAsyncOperation();
   Assert.IsTrue(someCondition);
}

के रूप में टिप्पणी में बताया गया है, वापसी प्रकार महत्वपूर्ण है । यदि आप विधि को वापस करने की घोषणा करते हैं तो यह काम नहीं करेगा ।Taskvoid


58
ध्यान दें कि Taskरिटर्न प्रकार अनिवार्य है - voidकाम नहीं करेगा (कम से कम VS2013 अपडेट 4 पर नहीं)
ओहद श्नाइडर

3
(यह कभी काम नहीं करेगा, क्योंकि- voidएस्सेंटिंग विधियों का इंतजार नहीं किया जा सकता है)
रिचर्ड शाज़ेले

1
@RichardSzalay: इसे काम करने के लिए बनाया जा सकता है, यहाँ देखें कि NUnit कैसे करता है: stackoverflow.com/questions/15031681/…
Wim Coenen

-3

System.IO विधियों को सीधे कॉल करने के बजाय, SystemWrapper लाइब्रेरी का उपयोग करने का प्रयास करें । फिर आपके परीक्षणों में आप अपनी इच्छानुसार कॉल का मज़ाक उड़ा सकते हैं, जो भी आपको पसंद हो, उसे आप अपने परीक्षण में वापस कर सकते हैं, जिसमें त्रुटि की स्थिति भी शामिल है, और सत्यापित करें कि आपका तर्क अपेक्षा के अनुरूप काम करता है।

यदि आप एक उदाहरण देखना चाहते हैं, तो इस ब्लॉग पोस्ट पर एक नज़र डालें कि यह राइनोमॉक्स के साथ कैसे उपयोग किया जा सकता है।


3
मैं इसे प्रश्न के उत्तर के रूप में नहीं देखता
स्टीव जूल 19'18
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.