Я создал ожидаемый атрибут исключения, реализовав интерфейс NUnit.Framework.IExpectException
, как описано там (http://www.nunit.org/index.php?p=exception&r=2.6.2), и он работает очень хорошо. Он подтверждает, что выбранное исключение имеет правильный тип и проверяет значение некоторых свойств для исключения.Модульное тестирование реализации IExpectException
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
public class ExpectedHttpErrorExceptionAttribute : ExpectedExceptionAttribute, IExpectException
{
public HttpStatusCode StatusCode { get; set; }
public ExpectedHttpErrorExceptionAttribute()
:base(typeof(HttpError))
{}
public ExpectedHttpErrorExceptionAttribute(HttpStatusCode statusCode)
:this()
{
StatusCode = statusCode;
}
public void HandleException(Exception ex)
{
Assert.That(ex, Is.TypeOf(ExpectedException), "Expected exception of type '{0}' but an exception of type '{1}' has been throwned.", typeof(HttpError).FullName, ex.GetType().FullName);
var httpStatusCode = ((HttpError) ex).StatusCode;
Assert.That(httpStatusCode, Is.EqualTo(StatusCode), "Expected status code '{0}' but was '{1}'.", StatusCode, httpStatusCode);
}
}
Моя проблема заключается в том, что я хочу модульного тестирования, что атрибут, но я не могу понять способ проверить следующий случай:
A unit test that have the attribute should fail if no exception are thrown.
Я просто не могу понять способ написать единичный тест для этого случая, поскольку HandleException не вызывается, когда не генерируется исключение.
Любое предложение?