2011-06-06 19 views
21

एसओ पर the question has been asked से अधिक बार। लेकिन केवल जवाब दिए गए हैं "आपको अपने यूनिट परीक्षणों को ऑर्डर करने की आवश्यकता नहीं है, यह खराब है क्योंकि" या "आप इससे बच सकते हैं अगर ..."एनयूनीट टेस्ट को कैसे ऑर्डर करें

मुझे पहले से ही पता है कि यह बुरा है, यह बुरा क्यों है , और इससे बचने के लिए तकनीकें। लेकिन यह वह नहीं है जिसे मैं जानना चाहता हूं। मैं जानना चाहता हूं कि वर्णमाला क्रम के अलावा, एनयूनीट परीक्षणों के निष्पादन को आदेश देना संभव है या नहीं। कुचलने के लिए: मैं वास्तव में राज्य को एक परीक्षण से अगले परीक्षण में प्रचार करना चाहता हूं। मेरा विश्वास करो कि मेरे पास इसका एक चालाक कारण है, जो सामान्य दर्शन को रोकता है।

MSTest "का आदेश दिया परीक्षण" क्षमता है, जो कुछ मामलों में बहुत उपयोगी है है। मैं NUnit में उस क्षमता को प्राप्त करना चाहता हूं। क्या यह किया जा सकता है?

उत्तर

9

कार्य-आसपास (हैक) आपके परीक्षण केस नामों को वर्णित करना है। इस सूत्र देखें:

https://bugs.launchpad.net/nunit-3.0/+bug/740539

वर्णमाला के क्रम पर निर्भर एक समाधान है कि आप उपयोग कर सकते हैं, लेकिन यह नहीं दस्तावेज और प्रदर्शन के दृश्य आदेश से परे समर्थित है। सिद्धांत में यह किसी भी समय बदल सकता है। व्यवहार में यह NUnit 3.0 जब तक परिवर्तन नहीं होगा, तो आप एक समाधान

यह बोली चार्ली पूल, NUnit पर मुख्य देव से है के रूप में उपयोग बहुत सुरक्षित हैं।

यह भी लगता है कि वे, NUnit 3 में आदेश दिया परीक्षण का समर्थन करने के लिए एक योजना खाना पकाने है, हालांकि वे कैसे करोगे तो चर्चा के अंतर्गत अभी भी है।

5

बस NUnit 2.5.1 के लिए एक अद्यतन। दस्तावेज़ीकरण के अनुसार ऐसे मामले हैं जो वर्णमाला क्रम भी समर्थित नहीं हैं।

NUnit TestCaseAttribute

निष्पादन

के आदेश NUnit 2.5 में, व्यक्तिगत परीक्षण मामलों वर्णानुक्रम हल कर रहे हैं और इसी क्रम में मार डाला। NUnit 2.5.1 के साथ, अलग-अलग मामलों नहीं हैं अनुसार क्रमबद्ध हैं, लेकिन जिस क्रम में NUnit उन्हें पता चलता है में क्रियान्वित कर रहे हैं। इस आदेश विशेषताओं का शाब्दिक आदेश का पालन नहीं करता और अक्सर विभिन्न compilers या CLR के विभिन्न संस्करणों के बीच अलग अलग होंगे।

नतीजतन, जब TestCaseAttribute एक विधि या जब अन्य डेटा उपलब्ध कराने के गुण TestCaseAttribute के साथ संयोजन में उपयोग किया जाता है, परीक्षण मामलों के आदेश अपरिभाषित है पर कई बार दिखाई देता है।

2

कोशिश का उपयोग करने के NameParameters तर्क TestName testcase क्रम में, एक स्ट्रिंग आप चाहते हैं के साथ पारित करने के लिए() TestName द्वारा आदेश दिया जा सकता है। NUnit 3.2.0 के लिए

[TestCase(..., TestName = "1stTest")] 
    [TestCase(..., TestName = "2ndTest")] 
16

अद्यतन - अब यह OrderAttribute समर्थन करते हैं।

OrderAttribute जिस क्रम में परीक्षण चलाए जा रहे हैं निर्दिष्ट करने के लिए एक परीक्षा पद्धति पर रखा जा सकता है। उदाहरण:

public class MyFixture 
{ 
    [Test, Order(1)] 
    public void TestA() { ... } 


    [Test, Order(2)] 
    public void TestB() { ... } 

    [Test] 
    public void TestC() { ... } 
} 

https://github.com/nunit/docs/wiki/Order-Attribute

0

Nuint के लिए आप कोड निम्न का उपयोग कर सकते हैं।

[TestMethod] 
    [Priority(2)] 
संबंधित मुद्दे