Das Problem, das Sie haben, ist, dass die NUnit Assert * Methoden wird eine AssertionException werfen, wenn eine Assertion fehlschlägt -. Aber es tut nichts anderes. Es sieht also nicht so aus, als könnten Sie außerhalb des Komponententests prüfen, ob der Test fehlgeschlagen ist oder nicht.
Die einzige Alternative, die ich mir vorstellen kann, ist die Verwendung von AOP (Aspect Oriented Programming) mit einem Werkzeug wie PostSharp. Mit diesem Werkzeug können Sie Aspekte erstellen, die auf bestimmte Ereignisse einwirken können. Zum Beispiel:
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;
}
}
Dieser Aspekt ist Code, der ausgeführt wird, wenn eine Ausnahme ausgelöst wird:
[ExceptionDialog]
[Test]
public void Test()
{
assert.AreEqual(2, 4);
}
Da der obige Test eine Ausnahme ausgelöst wird, läuft der Code in ExceptionDialogAttribute. Sie können Informationen über die Methode abrufen, z. B. ihren Namen, damit Sie sie in einer Datei protokollieren können.
Es ist schon lange her, seit ich PostSharp benutzt habe, also lohnt es sich, die Beispiele anzuschauen und damit zu experimentieren.