Мы уже давно используем NUnit & VisualStudio для написания кода на C # .NET. Тестирование исключений было выполнено в стиле
старый синтаксис:
[Test]
[ExpectException(typeof(ExceptionType))]
public void TestExceptionType()
{
}
Теперь NUnit выпустила версию 2.5.2, которая представила Assert.Throws( Type expectedExceptionType, TestDelegate code );
Это делает тестирование исключений намного более гибким. Наши тесты исключений теперь выглядят так:
новый синтаксис:
[Test]
public void TestWithNullBufferArgument()
{
ArgumentNullException ex = Assert.Throws<ArgumentNullException>(() => _testInstance.TestFunction(null));
// now you can examine the exception and it's properties
Assert.AreEqual(ex.Message, "Argument was null");
}
Наша проблема в том, что если используется Assert.Throws, Visual Studio выдает окно с необработанным исключением, когда для отладки программы используется NUnit (консоль или GUI runner).
, чтобы уточнить это: мы настроили проект VS, содержащий модульные тесты, для запуска nunit-x86.exe при отладке. (См. Свойства проекта, вкладка «Отладка», запускается действие для запуска nunit-x86.exe)
Это останавливает NUnit от продолжения испытаний. Можно продолжить отладку / модульное тестирование, нажав F5, но это не является жизнеспособным решением.
Есть ли способ избежать этого? Помещение блока try ... catch вокруг Assert.Throws ничего не делает, так как исключение происходит в коде делегата.
Я надеюсь, что кто-то может пролить свет на это.