Проблема у вас есть то, что NUnit Утверждай * методы выбросит AssertionException всякий раз, когда утверждают не удается. - но ничего не делает. Таким образом, не похоже, что вы можете проверить что-либо за пределами модульного теста, чтобы проверить, не прошел тест или нет.
Единственная альтернатива, которую я могу придумать, - использовать AOP (Aspect Oriented Programming) с помощью такого инструмента, как PostSharp. Этот инструмент позволяет создавать аспекты, которые могут воздействовать на определенные события. Например:
public class ExceptionDialogAttribute : OnExceptionAspect
{
public override void OnException(MethodExecutionEventArgs eventArgs)
{
string message = eventArgs.Exception.Message;
Window window = Window.GetWindow((DependencyObject) eventArgs.Instance);
MessageBox.Show(window, message, "Exception");
eventArgs.FlowBehavior = FlowBehavior.Continue;
}
}
Этот аспект является код, который выполняется всякий раз, когда возникает исключение:
[ExceptionDialog]
[Test]
public void Test()
{
assert.AreEqual(2, 4);
}
Поскольку выше тест сгенерирует исключение, код в ExceptionDialogAttribute будет работать. Вы можете получить информацию о методе, например, его имя, чтобы вы могли записать его в файл.
Прошло много времени с тех пор, как я использовал PostSharp, поэтому стоит проверить примеры и поэкспериментировать с ним.