2011-08-16 6 views
6

Utilizando NUnit 2.5.10, estoy probando un código que hace referencia a una biblioteca que contiene un tipo de excepción base. TIBCO.EMS.NamingException, del cual derivan otros tipos de excepción, específicamente TIBCO.EMS.InvalidNameException y TIBCO.EMS.NameNotFoundException.¿Cómo puedo obtener el atributo ExpectedException de NUnit para detectar la clase base de una excepción?

Me gustaría utilizar el atributo ExpectedException de NUnit para reconocer cuándo se ha lanzado una excepción subclasificada derivada de TIBCO.EMS.NamingException.

que puede detectar fácilmente cuando la excepción específica ha sido lanzado:

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

pero me gustaría hacer algún modo NUnit "espera" si alguna subclase de TIBCO.EMS.NamingException ha sido lanzado.

Tratando directamente no funciona:

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

¿Alguna idea?

Respuesta

9

De NUnit documentation:

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

Eso funcionó perfectamente! Estaba tan enamorada del atributo ExpectedException, que tantas veces he utilizado tantas veces, que echaba de menos volver a una parte diferente de la documentación. ¡Estaba tratando de hacer que un guante hiciera el trabajo de arranque! ¡Gracias, @silev por enseñarme un truco nuevo y útil! –

+1

Genial, eres bienvenido! También me gusta la versión genérica Assert.Throws () y muy útil Assert.DoesNotThrow (() => {...}) – sll

Cuestiones relacionadas