(Mcottle के उत्तर के विपरीत) लंबा उत्तर: नहीं ... अधिकांश समय
जब आप कहते हैं कि आप किसी विशेष अपवाद को बढ़ाने के लिए परीक्षण की अपेक्षा करते हैं, तो आपको पता चलेगा कि उस परीक्षण में कोई भी रेखा उस विशेष अपवाद को उठाती है।
यह जानने के समान नहीं है कि परीक्षण के तहत विधि अपवाद को फेंक देती है।
यदि आपके परीक्षण में एक वस्तु या संदर्भ स्थापित करना शामिल है (परीक्षण के भीतर, आपके ढांचे के संस्करण के भीतर नहीं SetUp
), तो आप एकल लाइन को लपेटने से बेहतर हो सकते हैं जिसे आप वास्तव में एक कोशिश / पकड़ में परीक्षण करना चाहते हैं, संभवतः एक सहायक के साथ।
उदाहरण के लिए,
public static class AssertHelper {
public delegate void Thunk();
public static void DoesNotThrow<T>(Thunk thunk, string message = "")
where T: Exception {
try {
thunk.Invoke();
} catch(T) {
Assert.Fail(message);
}
}
}
और फिर
[TestMethod]
public void assertHelperInAction() {
// Random setup stuff here that's too annoying to put in my SetUp
// method.
AssertHelper.DoesNotThrow<IllegalArgumentException>(() =>
{/* My random method under test */})
}
यदि यह परीक्षण विफल हो जाता है, तो मुझे पता है कि परीक्षण के तहत मेरे तरीके ने अपवाद को फेंक दिया, और यादृच्छिक सेटअप सामान में कुछ नहीं।
(आपको यादृच्छिक सेटअप सामान से बचने की कोशिश करनी चाहिए। कभी-कभी, परीक्षण में कुछ सेटअप कोड रखना आसान होता है।)