2011-08-16 13 views
6

Korzystając z , testuję kod odwołujący się do biblioteki zawierającej podstawowy typ wyjątku. TIBCO.EMS.NamingException, z którego pochodzą inne typy wyjątków, w szczególności TIBCO.EMS.InvalidNameException i TIBCO.EMS.NameNotFoundException.Jak uzyskać atrybut ExpectedException NUnit do wykrywania klasy bazowej wyjątku?

Chciałbym użyć atrybutu Oczekiwany wyjątek NUnit do rozpoznania, kiedy został zgłoszony wyjątek z podklasą pochodzący z TIBCO.EMS.NamingException.

mogę łatwo wykryć, gdy specyficzny wyjątek został rzucony:

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

Ale chciałbym jakoś NUnit „oczekiwać”, czy jakakolwiek podklasa TIBCO.EMS.NamingException została rzucona.

Próbując go bezpośrednio nie działa:

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

Jakieś pomysły?

Odpowiedz

9

Od NUnit documentation:

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

To działało idealnie! Byłem tak zakochany w atrybucie ExpectedException, z którego tak często korzystałem tak wiele razy, że przegapiłem powrót do innej części dokumentacji. Starałem się, aby rękawica spełniała obowiązek buta! Dziękuję, @silev za nauczenie mi użytecznej nowej sztuczki! –

+1

Świetnie, nie ma za co! Podoba mi się również wersja generyczna Assert.Throws () i bardzo przydatna Assert.DoesNotThrow (() => {...}) – sll

Powiązane problemy