Я совершенно новый в C # и NUnit.
В Boost.Test есть семейство макросов BOOST_*_THROW
. В тестовом модуле Python есть метод TestCase.assertRaises
.
Насколько я понимаю, в C # с NUnit (2.4.8) единственным методом выполнения теста исключений является использование ExpectedExceptionAttribute
.
Почему я должен предпочесть ExpectedExceptionAttribute
, скажем, подходу Boost.Test? Какие рассуждения могут стоять за этим дизайнерским решением? Почему это лучше в случае C # и NUnit?
Наконец, если я решу использовать ExpectedExceptionAttribute
, как я могу выполнить некоторые дополнительные тесты после того, как исключение было поднято и перехвачено? Допустим, я хочу проверить требование о том, что объект должен быть действительным после того, как какой-то установщик поднял System.IndexOutOfRangeException
. Как бы вы исправили следующий код для компиляции и работы, как ожидалось?
[Test]
public void TestSetterException()
{
Sth.SomeClass obj = new SomeClass();
// Following statement won't compile.
Assert.Raises( "System.IndexOutOfRangeException",
obj.SetValueAt( -1, "foo" ) );
Assert.IsTrue( obj.IsValid() );
}
Редактировать: Спасибо за ваши ответы. Сегодня я нашел Это запись в блоге Тесты , где упоминаются все три описанных вами метода (и еще один незначительный вариант). Жаль, что я не смог найти его раньше: - (.