Если я хочу проверить, что метод генерирует исключение определенного типа, атрибут ExpectedException NUnit не заботится о фактическом типе; если я бросаю родовое исключение перед вызовом метода, тест пройден:NUnit's TestCustomException не заботится о типе исключения
[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.");
}
Я что-то пропустил?
+1 Более приятное решение :) –
Это хорошая идея, и я думаю, что это подойдет большинству случаев, но я стараюсь избегать исключения в утверждениях в качестве теста. Мне нравится различие между двумя (исключение и результат), и, кроме того, я чувствую, что это осложняет мои тесты (два типа тестов) – Neowizard
Я думаю, что это вопрос предпочтений. Я предпочитаю этот подход. Спасибо, Джексон Папа! – stiank81