2010-01-11 16 views
7

कि कुछ परीक्षण करने के लिए है कि उदाहरण के लिए फेंकता एक ArgumentException मैं यह कर सकता:सी #, NUnit: परीक्षण के स्पष्ट रास्ता ArgumentException सही ParamName

Assert.Throws<ArgumentException>(() => dog.BarkAt(deafDog)); 

मैं कैसे जांच कर सकते हैं कि ParamName एक स्पष्ट तरह से सही है ? और बोनस प्रश्न: या शायद आप शायद यह परीक्षण करने की सिफारिश नहीं करेंगे?

उत्तर

10

मिले (लेकिन मुझे तो कृपया अगर किसी को भी एक और भी बेहतर एक है!)

var e = Assert.Throws<ArgumentException>(() => dog.BarkAt(deafDog)); 
Assert.That(e.ParamName, Is.EqualTo("otherDog")); 

Facepalm ...

+0

यह मेरा पसंदीदा दृष्टिकोण है। –

+1

Assert.IsTrue (e.ParamName == "अन्य डॉग")? :) – oldUser

+2

@alexm: लेकिन परीक्षण का असफल होने पर इसका उपयोग कम स्पष्ट संदेश बना देगा: * अपेक्षित स्ट्रिंग लंबाई 4 लेकिन 7 थी। स्ट्रिंग्स इंडेक्स 0 पर भिन्न होती हैं। अपेक्षित: "अन्य डॉग" लेकिन था: "कुछ भी" * बनाम * अपेक्षित : सच लेकिन था: झूठा *। ;) – Svish

4

तुम सिर्फ तुलना में अपवाद के साथ और अधिक करना चाहते हैं तो दावा है कि यह फेंक दिया जाता है, तो Assert.Throws वास्तव में अपवाद वापस आती है और आप यह कर सकते हैं: एक बहुत स्पष्ट रास्ता

var exception = Assert.Throws<ArgumentException>(() => dog.BarkAt(deafDog)); 
// Assert something else about the exception 
+0

यही संदेश जू है अगर संदेश विफल रहता है तो संदेश प्रदर्शित किया जाएगा? – Svish

+0

न्यूटिट, 'Assert.Throws ' दावा विधि अपवाद देता है। –

+0

@ जोओओ - धन्यवाद, संपादित उत्तर। –

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