Je suis en train d'écrire un test unitaire pour couvrir le code trouvé dans notre « dernière chance gestionnaire d'exceptions ».Test Last Chance Exception Handling
Lorsqu'on se réfère à la dernière chance la gestion des exceptions dont je parle gestionnaires d'événements des événements:
Application.ThreadException AppDomain.CurrentDomain.UnhandledException
Plus ou moins je vérifier que les journaux sont produits en détail l'information produite par l'exception. Mon test est similaire à:
[Test]
public void TestMethod()
{
//Setup log4net ConsoleAppender here
//hooking a MemoryStream to the Console.SetOut done here
ExceptionHandler.InstallExceptionHandler();
Thread exceptionThread = new Thread(ThrowException);
Thread.Start();
//read stream here
Assert.That(streamContainsExceptionText);
}
private void ThrowException() {
throw new Exception("Unhandled Exception");
}
Le gestionnaire d'exception est un singleton que lorsque « installé », ajoute simplement aux gestionnaires d'événements donnés précédemment. La chose étrange est que je n'ai pas de résultats cohérents. La rupture et le débogage ne semblent pas être une option car il semble se situer entre l'exception et le gestionnaire d'exception.
Je place plusieurs « Console.WriteLine() » déclarations contenues dans le code pour vérifier où le code a échoué, mais ce n'est pas cohérente. Je crois que cela a quelque chose à voir avec le framework de test qui tue le thread ou peut-être une sorte de garbage collection.
Quelqu'un at-il eu l'expérience de tester un morceau de code comme celui-ci? Ou avez-vous un aperçu de la raison pour laquelle je vois ce genre de comportement?
J'utilise NUnit 2.4 et en cours d'exécution dans l'IDE en utilisant ReSharper.
Merci, je vais essayer dès que possible. –