2011-11-23 10 views
5

Chcę jeden TestMethod dla wielu wyjątków. Problem polega na tym, że metoda testowa zatrzymuje się po pierwszym rzuconym wyjątku.Wyjątek ExpectedException UnitTest z wieloma wyjątkami

wiem, że mogę zrobić coś takiego:

try 
{ 
    sAbc.ToInteger(); 
    Assert.Fail(); // If it gets to this line, no exception was thrown 
} 
catch (ArgumentException) { } 

Ale chcę użyć następującego kodu bazy:

[TestMethod, ExpectedException(typeof(ArgumentException), "...")] 
public void StringToIntException() 
{ 
    sAbc.ToInteger(); // throws an exception and stops here 
    sDecimal.ToInteger(); // throws theoretically a exception too... 
} 

I nie chcę, aby utworzyć jedną TestMethod dla każdy możliwy wyjątek:

[TestMethod, ExpectedException(typeof(ArgumentException), "...")] 
public void StringToIntException() 
{ 
    sAbc.ToInteger(); 
} 

[TestMethod, ExpectedException(typeof(ArgumentException), "...")] 
public void StringToIntException() 
{ 
    sDecimal.ToInteger(); 
} 

Odpowiedz

0

Z tego, co wiem, nie jest możliwe w przypadku atrybutów, ponieważ po wykonaniu polecenia ption jest rzucany, wykonywanie metod jest przerywane. Dlatego jeśli masz wyjątek w pierwszym wierszu, drugi nie zostanie wykonany.

Jeśli naprawdę potrzebujesz tej funkcji, należy użyć NUnit, który posiada:

Assert.Throws<Exception>(delegate { /*Your code*/ }); 
+0

jaki temat lub typu wielu wyjątków? tylko jeden wyjątek może się zdarzyć na raz. Czy jest to możliwe do osiągnięcia przez mstest? – liang

Powiązane problemy