public void Should_write_result() { var result = new List<TestResult>(); result.Add(new TestResult("nunit", @"C:\Users\ack\src\AutoTest.Net\src\AutoTest.Runners.NUnit.Tests.TestResource\bin\AutoTest.NET\AutoTest.Runners.NUnit.Tests.TestResource.dll", "AutoTest.Runners.NUnit.Tests.TestResource.Fixture1", 100, "AutoTest.Runners.NUnit.Tests.TestResource.Fixture1.Should_fail", Shared.Results.TestState.Failed, "failing test")); result[0].AddStackLine(new StackLine() { Method = "AutoTest.Runners.NUnit.Tests.TestResource.Fixture1.Should_fail()", File = @"C:\Users\ack\src\AutoTest.Net\src\AutoTest.Runners.NUnit.Tests.TestResource\Fixture1.cs", Line = 21 }); result.Add(new TestResult("nunit", @"C:\Users\ack\src\AutoTest.Net\src\AutoTest.Runners.NUnit.Tests.TestResource\bin\AutoTest.NET\AutoTest.Runners.NUnit.Tests.TestResource.dll", "AutoTest.Runners.NUnit.Tests.TestResource.Fixture1", 20, "AutoTest.Runners.NUnit.Tests.TestResource.Fixture1.Should_ignore", Shared.Results.TestState.Ignored, "ignored test")); result[1].AddStackLine(new StackLine() { Method = "AutoTest.Runners.NUnit.Tests.TestResource.Fixture1.Should_ignore()", File = @"C:\Users\ack\src\AutoTest.Net\src\AutoTest.Runners.NUnit.Tests.TestResource\Fixture1.cs", Line = 27 }); result.Add(new TestResult("nunit", @"C:\Users\ack\src\AutoTest.Net\src\AutoTest.Runners.NUnit.Tests.TestResource\bin\AutoTest.NET\AutoTest.Runners.NUnit.Tests.TestResource.dll", "AutoTest.Runners.NUnit.Tests.TestResource.Fixture1", 20, "AutoTest.Runners.NUnit.Tests.TestResource.Fixture1.Should_pass", Shared.Results.TestState.Passed, "")); result.Add(new TestResult("nunit", @"C:\Users\ack\src\AutoTest.Net\src\AutoTest.Runners.NUnit.Tests.TestResource\bin\AutoTest.NET\AutoTest.Runners.NUnit.Tests.TestResource.dll", "AutoTest.Runners.NUnit.Tests.TestResource.Fixture2", 20, "AutoTest.Runners.NUnit.Tests.TestResource.Fixture2.Should_also_pass", Shared.Results.TestState.Passed, "")); result.Add(new TestResult("nunit", @"C:\Users\ack\src\AutoTest.Net\src\AutoTest.Runners.NUnit.Tests.TestResource\bin\AutoTest.NET\AutoTest.Runners.NUnit.Tests.TestResource.dll", "AutoTest.Runners.NUnit.Tests.TestResource.Fixture2", 250, "AutoTest.Runners.NUnit.Tests.TestResource.Fixture2.Should_also_pass_again", "Alternative description", Shared.Results.TestState.Passed, "")); var file = Path.GetTempFileName(); var writer = new ResultsXmlWriter(result); writer.Write(file); var original = File.ReadAllText(file).Replace("\r\n", "\n"); var generated = File.ReadAllText(getPath("Results.xml")).Replace("\r\n", "\n"); Assert.That(original, Is.EqualTo(generated)); }
private static void tryRunTests() { AppDomain.CurrentDomain.UnhandledException += CurrentDomainUnhandledExceptionHandler; try { var parser = new OptionsXmlReader(_arguments.InputFile); parser.Parse(); if (!parser.IsValid) return; run(parser); var writer = new ResultsXmlWriter(_results); writer.Write(_arguments.OutputFile); } catch (Exception ex) { try { var result = new List<TestResult>(); result.Add(ErrorHandler.GetError("Init", ex)); var writer = new ResultsXmlWriter(result); writer.Write(_arguments.OutputFile); } catch { Console.WriteLine(ex.ToString()); } } }
public static void CurrentDomainUnhandledExceptionHandler(object sender, UnhandledExceptionEventArgs args) { var message = getException((Exception)args.ExceptionObject); // TODO: Seriously!? Firgure out what thread is causing the app domain unload exception if (!_arguments.CompatabilityMode && !args.ExceptionObject.GetType().Equals(typeof(System.AppDomainUnloadedException))) { var finalOutput = new TestResult("Any", "", "", 0, "An unhandled exception was thrown while running a test.", TestState.Panic, "This is usually caused by a background thread throwing an unhandled exception. " + "Most test runners run in clr 1 mode which hides these exceptions from you. If you still want to suppress these errors (not recommended) you can enable compatibility mode." + Environment.NewLine + Environment.NewLine + "To head on to happy land where fluffy bunnies roam freely painting green left right and center do so by passing the --compatibility-mode switch to the test " + "runner or set the <TestRunnerCompatibilityMode>true</TestRunnerCompatibilityMode> configuration option in " + "AutoTest.Net." + Environment.NewLine + Environment.NewLine + message); AddResults(finalOutput); } if (args.IsTerminating) { var writer = new ResultsXmlWriter(_results); writer.Write(_arguments.OutputFile); Write(" "); if (File.Exists(_arguments.OutputFile)) { Write("Test run result:"); Write(File.ReadAllText(_arguments.OutputFile)); } Environment.Exit(-1); } Thread.CurrentThread.IsBackground = true; Thread.CurrentThread.Name = "Dead thread"; lock (_haltedThreads) { _haltedThreads.Add(Thread.CurrentThread); } /*if (Thread.CurrentThread.ManagedThreadId != _mainThreadID) { while (true) Thread.Sleep(TimeSpan.FromHours(1)); }*/ }
public static void CurrentDomainUnhandledExceptionHandler(object sender, UnhandledExceptionEventArgs args) { var message = getException((Exception)args.ExceptionObject); var result = new TestResult("Any", "", "", 0, "An unhandled exception was thrown while running a test", TestState.Panic, message); AddResults(result); var writer = new ResultsXmlWriter(_results); writer.Write(_arguments.OutputFile); if (args.IsTerminating) Environment.Exit(-1); }
public static void CurrentDomainUnhandledExceptionHandler(object sender, UnhandledExceptionEventArgs args) { var message = getException((Exception)args.ExceptionObject); if (Thread.CurrentThread.ManagedThreadId.Equals(_mainThreadID)) { var result = new TestResult("Any", "", "", 0, "An unhandled exception was thrown while running a test", TestState.Panic, message); AddResults(result); var writer = new ResultsXmlWriter(_results); writer.Write(_arguments.OutputFile); if (args.IsTerminating) Environment.Exit(-1); return; } if (!_arguments.CompatabilityMode) { var result = new TestResult( "Any", "", "", 0, string.Format("An unhandled exception was thrown from an app domain or a background thread while running a test (Thread: {0}}", Thread.CurrentThread.Name), TestState.Panic, message); AddResults(result); } Thread.CurrentThread.IsBackground = true; Thread.CurrentThread.Name = "Dead thread"; lock (_haltedThreads) { _haltedThreads.Add(Thread.CurrentThread); } while (true) Thread.Sleep(TimeSpan.FromHours(1)); }