public void TestFinished(TestCaseResult testResult) { if (testResult.Executed) { testRunCount++; if (testResult.IsFailure) { failureCount++; if (progress) { Console.Write("F"); } messages.Add(string.Format("{0}) {1} :", failureCount, testResult.Test.TestName.FullName)); messages.Add(testResult.Message.Trim(Environment.NewLine.ToCharArray())); string stackTrace = StackTraceFilter.Filter(testResult.StackTrace); if (stackTrace != null && stackTrace != string.Empty) { string[] trace = stackTrace.Split(System.Environment.NewLine.ToCharArray()); foreach (string s in trace) { if (s != string.Empty) { string link = Regex.Replace(s.Trim(), @".* in (.*):line (.*)", "$1($2)"); messages.Add(string.Format("at\n{0}", link)); } } } BabysitterSupport.RecordFailedTest(currentTestName); } } else { testIgnoreCount++; if (progress) { Console.Write("N"); } } currentTestName = string.Empty; }
public int Execute(ConsoleOptions options) { XmlTextReader transformReader = GetTransformReader(options); if (transformReader == null) { return(FILE_NOT_FOUND); } TextWriter outWriter = Console.Out; bool redirectOutput = options.output != null && options.output != string.Empty; if (redirectOutput) { StreamWriter outStreamWriter = new StreamWriter(options.output); outStreamWriter.AutoFlush = true; outWriter = outStreamWriter; } TextWriter errorWriter = Console.Error; bool redirectError = options.err != null && options.err != string.Empty; if (redirectError) { StreamWriter errorStreamWriter = new StreamWriter(options.err); errorStreamWriter.AutoFlush = true; errorWriter = errorStreamWriter; } TestRunner testRunner = MakeRunnerFromCommandLine(options); try { if (testRunner.Test == null) { testRunner.Unload(); Console.Error.WriteLine("Unable to locate fixture {0}", options.fixture); return(FIXTURE_NOT_FOUND); } EventCollector collector = new EventCollector(options, outWriter, errorWriter); TestFilter testFilter = TestFilter.Empty; if (options.run != null && options.run != string.Empty) { Console.WriteLine("Selected test: " + options.run); testFilter = new SimpleNameFilter(options.run); } if (options.include != null && options.include != string.Empty) { Console.WriteLine("Included categories: " + options.include); TestFilter includeFilter = new CategoryExpression(options.include).Filter; if (testFilter.IsEmpty) { testFilter = includeFilter; } else { testFilter = new AndFilter(testFilter, includeFilter); } } if (options.exclude != null && options.exclude != string.Empty) { Console.WriteLine("Excluded categories: " + options.exclude); TestFilter excludeFilter = new NotFilter(new CategoryExpression(options.exclude).Filter); if (testFilter.IsEmpty) { testFilter = excludeFilter; } else if (testFilter is AndFilter) { ((AndFilter)testFilter).Add(excludeFilter); } else { testFilter = new AndFilter(testFilter, excludeFilter); } } testFilter = BabysitterSupport.AddBabysitterFilter(testFilter); TestResult result = null; string savedDirectory = Environment.CurrentDirectory; TextWriter savedOut = Console.Out; TextWriter savedError = Console.Error; try { result = testRunner.Run(collector, testFilter); } finally { outWriter.Flush(); errorWriter.Flush(); if (redirectOutput) { outWriter.Close(); } if (redirectError) { errorWriter.Close(); } Environment.CurrentDirectory = savedDirectory; Console.SetOut(savedOut); Console.SetError(savedError); } Console.WriteLine(); if (result != null) { string xmlOutput = CreateXmlOutput(result); if (options.xmlConsole) { Console.WriteLine(xmlOutput); } else { try { //CreateSummaryDocument(xmlOutput, transformReader ); XmlResultTransform xform = new XmlResultTransform(transformReader); xform.Transform(new StringReader(xmlOutput), Console.Out); } catch (Exception ex) { Console.WriteLine("Error: {0}", ex.Message); return(TRANSFORM_ERROR); } } // Write xml output here string xmlResultFile = options.xml == null || options.xml == string.Empty ? "TestResult.xml" : options.xml; using (StreamWriter writer = new StreamWriter(xmlResultFile)) { writer.Write(xmlOutput); } } //if ( testRunner != null ) // testRunner.Unload(); if (result == null || collector.HasExceptions) { collector.WriteExceptions(); return(UNEXPECTED_ERROR); } if (!result.IsFailure) { return(OK); } ResultSummarizer summ = new ResultSummarizer(result); return(summ.FailureCount); } finally { testRunner.Unload(); } }