2011-08-16 38 views
6

使用NUnit 2.5.10,我測試了一些引用包含基本異常類型的庫的代碼。 TIBCO.EMS.NamingException,其他異常類型從中派生,具體爲TIBCO.EMS.InvalidNameExceptionTIBCO.EMS.NameNotFoundException如何獲得NUnit的ExpectedException屬性來檢測異常的基類?

我想使用NUnit的ExpectedException屬性來識別何時派生自TIBCO.EMS.NamingException的任何子類異常已被拋出。

當特定的異常被拋出,我可以很容易地檢測:

[ExpectedException("TIBCO.EMS.NameNotFoundException")] 
     or 
[ExpectedException(Typeof(TIBCO.EMS.InvalidNameException))] 

但我想以某種方式使NUnit的「期望」的TIBCO.EMS.NamingException任何子類是否已經被拋出。

直接嘗試它不起作用:

[ExpectedException("TIBCO.EMS.NamingException")] 
    or 
[ExpectedException(typeof(TIBCO.EMS.NamingException))] 

任何想法?

回答

9

NUnit documentation

// Allow both ApplicationException and any derived type 
Assert.Throws(Is.InstanceOf(typeof(ApplicationException), code); 
Assert.Throws(Is.InstanceOf<ApplicationException>(), code); 
+2

那完美!我非常喜歡ExpectedException屬性,這個屬性我之前曾經使用過很多次,所以我錯過了回到文檔的不同部分。我試圖讓手套做靴子的職責!謝謝@silev教我一個有用的新技巧! –

+1

太好了,歡迎您!我也喜歡通用版本Assert.Throws ()和非常有用的Assert.DoesNotThrow(()=> {...}) – sll