Po prostu szukam przykładów, kiedy należy użyć Assert.Catch lub Assert.Throws do potwierdzenia wyjątków zgłoszonych podczas testowania jednostkowego. Wiem, że mogę również używać ExpectedException, ale jestem ciekawy, jak odróżnić "Catch" od "Throws". Dzięki!Kiedy używać Assert.Catch kontra Assert.Throws in Unit Testing
6
A
Odpowiedz
9
Pierwsza linia documentation wydaje się całkiem jasne:
Assert.Catch
jest podobny doAssert.Throws
ale przejdą za wyjątkiem tego, że pochodzi od podanej.
więc używać Assert.Catch
jeżeli wyjątkiem, że wynika z określonego wyjątku jest ważne (to znaczy, że zbyt podlegałaby w równoważnym catch
bloku).
Dokumentacja Assert.Throws podaje przykłady zarówno:
// Require an ApplicationException - derived types fail! Assert.Throws(typeof(ApplicationException), code); Assert.Throws<ApplicationException>()(code); // Allow both ApplicationException and any derived type Assert.Throws(Is.InstanceOf(typeof(ApplicationException), code); Assert.Throws(Is.InstanceOf<ApplicationException>;(), code); // Allow both ApplicationException and any derived type Assert.Catch<ApplicationException>(code); // Allow any kind of exception Assert.Catch(code);