Если я хочу проверить, что метод выдает исключение определенного типа, атрибут ExpectedException в NUnit не заботится о реальном типе; если перед вызовом метода я генерирую универсальное исключение, тест проходит:
[Test, ExpectedException(typeof(TestCustomException))]
public void FirstOnEmptyEnumerable()
{
throw new Exception(); // with this, the test should fail, but it doesn't
this.emptyEnumerable.First(new TestCustomException());
}
Если я хочу проверить, что тест выдает точный тип исключения, я должен сделать что-то вроде руководства:
[Test]
public void FirstOnEmptyEnumerable()
{
try
{
throw new Exception(); // now the test fails correctly.
this.emptyEnumerable.First(new TestCustomException());
}
catch (TestCustomException)
{
return;
}
Assert.Fail("Exception not thrown.");
}
Я что-то упустил?