2009-10-23 6 views
12

मैं एक इकाई परीक्षण है कि मामलों की एक किस्म का परीक्षण करती है, इस तरह:NUnit और TestCaseAttribute, पैरामीटर के क्रॉस-जॉइन संभव है?

public void Test1(Int32 a, Int32 b, Int32 c) 

चलो कहते हैं कि मैं एक पाश के बिना परीक्षण कोड बनाना चाहते हैं, तो मैं इस तरह पैरामीटर निर्दिष्ट करने testcase उपयोग करना चाहते हैं:

[TestCase(1, 1, 1)] 
public void Test1(Int32 a, Int32 b, Int32 c) 

यह कहना इस विशेषता के साथ मेरे लिए यह संभव है:

  • पहले पैरामीटर के लिए, यहाँ मूल्यों
  • का एक सेट है
  • दूसरा पैरामीटर के लिए, यहाँ मूल्यों
  • तीसरे पैरामीटर के लिए का एक सेट है, यहाँ मूल्यों
  • का एक सेट अब, परीक्षण ऊपर

Ie के सभी संयोजनों है। इस तरह कुछ:

[TestCase(new[] { 1, 2, 3, 4 }, new[] { 1, 2, 3, 4 }, new[] { 1, 2, 3, 4 })] 
public void Test1(Int32 a, Int32 b, Int32 c) 

ऐसा प्रतीत नहीं होता है, लेकिन शायद मैं कुछ दिख रहा हूं?

उत्तर

13

NUnit Values विशेषता Combinatorial विशेषता के साथ एक साथ इस्तेमाल किया जा सकता है जो इस लक्ष्य को हासिल करने के लिए प्रदान करता है:

[Test, Combinatorial] 
public void Test1( 
    [Values(1,2,3,4)] Int32 a, 
    [Values(1,2,3,4)] Int32 b, 
    [Values(1,2,3,4)] Int32 c 
) 
{ 
    ... 
} 
+0

यही काम किया, और मिश्रित जाहिरा तौर पर डिफ़ॉल्ट के रूप में अच्छी तरह से है, IntelliSense डॉक ने कहा कि, और मुझे लगता है कि विशेष रूप से बिना की कोशिश की विशेषता और यह ठीक तरह से काम करता है जैसा आपने कहा था। बहुत बहुत धन्यवाद। –

+1

@ LasseV.Karlsen 'मानों 'विशेषता के अतिरिक्त, [' रेंज' विशेषता] (http://www.nunit.org/index.php?p=range&r=2.5) का भी उसी तरीके से उपयोग किया जा सकता है । सभी मूल्यों को स्पष्ट रूप से सूचीबद्ध करने के बजाय, उन्हें एक सीमा के रूप में निर्दिष्ट किया जा सकता है। तो, आपके उदाहरण में, '[मान (1,2,3,4)] 'के बजाय, आप' [रेंज (1,4,1)] 'के साथ प्रतिस्थापित कर सकते हैं। –

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