Если вы действительно хотите обрабатывать и регистрировать исключения во время выполнения теста, вы можете обернуть этот стандартный шаблон вспомогательным методом и использовать его, как показано ниже [*] .
Но если исключения являются частью тестового примера, это неправильный подход, и вам следует использовать средства, предоставляемые тестовой средой, например, NUnit предоставляет такие помощники для тестирования исключений:
Assert.Throws<ExceptionType>(() => { ... code block... });
Assert.DoesNotThrow(() => { ... code block... });
Идля очистки специальных атрибутов метода, таких как [TestCleanup]
и [TestInitialize]
, для автоматической инициализации и очистки теста с помощью инфраструктуры тестирования.
[*] Идея состоит в том, чтобы обернуть тело теста вделегировать и передать помощнику, который фактически выполняет выполнение теста, заключенный в блок try / catch:
// helper
public void ExecuteTest(Action test)
{
try
{
test.Invoke();
}
catch (Exception ex)
{
// test failed, log error message in my log file and make the test fail
}
finally
{
// do some cleanup with different parameters
}
}
[TestMethod]
public void This_is_a_Test_1()
{
Action test = () =>
{
// test case logic
// asserts
};
this.ExecuteTest(test);
}