2011-08-16 6 views
6

Utilizzo di NUnit 2.5.10, Sto testando un codice che fa riferimento a una libreria contenente un tipo di eccezione di base. TIBCO.EMS.NamingException, da cui derivano altri tipi di eccezione, in particolare TIBCO.EMS.InvalidNameException e TIBCO.EMS.NameNotFoundException.Come posso ottenere l'attributo ExpectedException di NUnit per rilevare la classe base di un'eccezione?

Vorrei utilizzare l'attributo ExpectedException di NUnit per riconoscere quando è stata generata un'eventuale sottoclasse derivante da TIBCO.EMS.NamingException.

mi può facilmente rilevare quando l'eccezione specifico è stato gettato:

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

ma vorrei fare in qualche modo NUnit "prevedere" se qualsiasi sottoclasse di TIBCO.EMS.NamingException è stato gettato.

Cercando direttamente non funziona:

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

Tutte le idee?

risposta

9

Da NUnit documentation:

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

Che ha funzionato perfettamente! Ero così innamorato dell'attributo ExpectedException, che ho usato così utile tante volte prima, che mi è mancato tornare a una parte diversa della documentazione. Stavo cercando di fare un guanto fare il dovere di uno stivale! Grazie, @silev per avermi insegnato un nuovo trucco utile! –

+1

Ottimo, sei il benvenuto! Mi piace anche la versione generica Assert.Throws () e molto utile Assert.DoesNotThrow (() => {...}) – sll

Problemi correlati