2009-09-06 19 views
5

Próbuję użyć nowej metody obsługi wyjątków przez nunitki, ale trudno mi znaleźć informacje na jej temat i jak z niej korzystać również z moq.Jak obsługiwać wyjątki przy pomocy nunit i moq?

Mam teraz moq, który rzuca wyjątek na wyśmiewaną metodę, ale nie wiem, jak użyć nunit, aby go złapać i spojrzeć na to.

Odpowiedz

14

Istnieje kilka różnych sposobów, aby to zrobić; Używam Assert.Throws.

var exception = Assert.Throws<YourTypeOfException>(()=> Action goes here); 

np.

var exception = Assert 
       .Throws<ArgumentNullException>(()=> new ChimpPuncher(null)); 

Możesz następnie wysłać zapytanie do obiektu wyjątku, jeśli chcesz, np.

0

Dlaczego nie możesz zamknąć wyśmiewanego wywołania metody w bloku try/catch i wychwycić wyjątek, który został zgłoszony?

2

Najlepszym rozwiązaniem jest: [ExpectedException(typeof(ApplicationException))] powyżej metody badania.

+0

Problem z tym podejściem polega na tym, że jeśli ten typ wyjątku zostanie zgłoszony przez _any_ część metody ozdobionej atrybutem ExpectedException, test zostanie zaliczony. Korzystanie z mechanizmu Assert.Throws <> redukuje obszar powierzchni, ponieważ wyjątek musi zostać zgłoszony w ramach metody przez niego uruchamianej. –

Powiązane problemy