Если вы используете NUnit, то вы можете сделать:
Assert.Throws<Exception>(() => { someObj.SomeMethod(1); });
Вы также можете украсить тест с атрибутом ExpectedException
, хотя это заставит тест пройти, если какой-либо Exception
отбрасывается, а не просто заявление, которое вы хотите проверить.
EDIT: Если вы используете MSTest, насколько я знаю, вы можете только использовать атрибуты ожидать исключения, т.е.
[ExpectedException(typeof(Exception)]
public void TestMethod() { ... }
Вы должны рассмотреть бросание более конкретный тип исключения из вашего издеваться и ожидая, что тип вместо простой Exception
.
Вы также можете определить свой собственный метод тиражирования функциональности NUnit:
public static class ExceptionAssert
{
public static void Throws<T>(Action act) where T : Exception
{
try
{
act();
}
catch (T ex)
{
return;
}
catch (Exception ex)
{
Assert.Fail(string.Format("Unexpected exception of type {0} thrown", ex.GetType().Name));
}
Assert.Fail(string.Format("Expected exception of type {0}", typeof(T).Name));
}
}
Какие модульного тестирования рамки вы используете? – 48klocs
MSTest. Тем не менее, это nmock, о котором я забочусь здесь, а не о том, как это делают другие среды тестирования. –
@ O.O - NMock - это насмешливая структура, а не единичная платформа тестирования. Вам все равно придется утверждать, что в ваших тестах ожидается исключение, вызванное макетом. – Lee