Assert.Throws जो अपवाद फेंका गया है उसे लौटाता है जो आपको अपवाद पर जोर देता है।
var ex = Assert.Throws<Exception>(() => user.MakeUserActive());
Assert.That(ex.Message, Is.EqualTo("Actual exception message"));
इसलिए यदि कोई अपवाद नहीं फेंका गया है, या गलत प्रकार का अपवाद फेंका गया है, तो पहला Assert.Throwsदावा विफल हो जाएगा। हालाँकि यदि सही प्रकार का अपवाद फेंका जाता है तो अब आप उस वास्तविक अपवाद पर जोर दे सकते हैं जिसे आपने चर में सहेजा है।
इस पैटर्न का उपयोग करके आप अपवाद संदेश के अलावा अन्य चीजों पर जोर दे सकते हैं, उदाहरण के लिए ArgumentExceptionऔर डेरिवेटिव के मामले में , आप यह मान सकते हैं कि पैरामीटर नाम सही है:
var ex = Assert.Throws<ArgumentNullException>(() => foo.Bar(null));
Assert.That(ex.ParamName, Is.EqualTo("bar"));
आप इन मुखर को करने के लिए धाराप्रवाह एपीआई का उपयोग कर सकते हैं:
Assert.That(() => foo.Bar(null),
Throws.Exception
.TypeOf<ArgumentNullException>()
.With.Property("ParamName")
.EqualTo("bar"));
या वैकल्पिक रूप से
Assert.That(
Assert.Throws<ArgumentNullException>(() =>
foo.Bar(null)
.ParamName,
Is.EqualTo("bar"));
अपवाद संदेशों पर जोर देते समय थोड़ा टिप SetCultureAttributeयह सुनिश्चित करने के लिए परीक्षण विधि को सजाने के लिए है कि फेंक दिया गया संदेश अपेक्षित संस्कृति का उपयोग कर रहा है। यदि आप स्थानीयकरण की अनुमति देने के लिए संसाधनों के रूप में अपने अपवाद संदेशों को संग्रहीत करते हैं तो यह खेल में आता है।