При выполнении этого теста:(MSTest) Расширение ExpectedExceptionBaseAttribute скрывает Неудачный тест объяснение
[TestMethod]
[ExpectedException(typeof(SpecialException))]
public void Test1()
{
throw new NotImplementedException();
}
Visual Studio говорит мне, почему он не:.
Метод испытания [...] Test1 бросил исключение System.NotImplementedException, но исключение [...]. Ожидалось специальное исключение. Исключение сообщение: System.NotImplementedException: метод или операция не реализована.
Но когда я пытаюсь расширить ExpectedExceptionBaseAttribute
(ожидать для кода ошибки в SpecialException
) так:
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
class ExpectedSpecialException : ExpectedExceptionBaseAttribute
{
protected override void Verify(Exception exception)
{
SpecialException se = exception as SpecialException;
if (se == null)
{
RethrowIfAssertException(exception);
throw new Exception("SpecialException was expected but test method threw another one");
}
}
}
и использовать его так:
[TestMethod]
[ExpectedSpecialException]
public void Test1()
{
throw new NotImplementedException();
}
VS производит не очень информационное сообщение:
Исключение составляет en throw by target of invocation.
Все примеры (1, 2, 3) продлений ExpectedExceptionBaseAttribute
я нашел в Интернете, имеют ту же попытку дать более подробную информацию о неисправности в заброшенном исключении, но без результата.
Я что-то не так? Есть ли способ предоставить больше информации о таких неудачных тестах?
Это исключение было вызвано вашим методом Verify, вы должны увидеть InnerException соответствовать Exception вы бросил. Не то, как MSDN говорит вам об этом, вы должны использовать Assert(). –