RunSummary RunTestClass(ITestCollection testCollection, string className, IList <Xunit1TestCase> testCases, IMessageSink messageSink) { var handler = new TestClassCallbackHandler(testCases, messageSink); var results = handler.TestClassResults; results.Continue = messageSink.OnMessage(new TestClassStarting(testCollection, className)); if (results.Continue) { try { var methodNames = testCases.Select(tc => tc.Method.Name).ToList(); executor.RunTests(className, methodNames, handler); handler.LastNodeArrived.WaitOne(); } catch (Exception ex) { var stackTrace = ex.StackTrace; var rethrowIndex = stackTrace.IndexOf("$$RethrowMarker$$"); if (rethrowIndex > -1) { stackTrace = stackTrace.Substring(0, rethrowIndex); } results.Continue = messageSink.OnMessage(new ErrorMessage(ex.GetType().FullName, ex.Message, stackTrace)) && results.Continue; } } results.Continue = messageSink.OnMessage(new TestClassFinished(testCollection, className, results.Time, results.Total, results.Failed, results.Skipped)) && results.Continue; return(results); }
RunSummary RunTestClass(ITestCollection testCollection, string className, IList <Xunit1TestCase> testCases, IMessageSink messageSink) { var handler = new TestClassCallbackHandler(testCases, messageSink); var results = handler.TestClassResults; results.Continue = messageSink.OnMessage(new TestClassStarting(testCollection, className)); if (results.Continue) { try { var methodNames = testCases.Select(tc => tc.Method.Name).ToList(); executor.RunTests(className, methodNames, handler); handler.LastNodeArrived.WaitOne(); } catch (Exception ex) { var failureInformation = Xunit1ExceptionUtility.ConvertToFailureInformation(ex); results.Continue = messageSink.OnMessage(new ErrorMessage(failureInformation.ExceptionTypes, failureInformation.Messages, failureInformation.StackTraces, failureInformation.ExceptionParentIndices)) && results.Continue; } } results.Continue = messageSink.OnMessage(new TestClassFinished(testCollection, className, results.Time, results.Total, results.Failed, results.Skipped)) && results.Continue; return(results); }
public static void WithClassNode_ParsesNumbersWithInvariantCulture() { var handler = new TestClassCallbackHandler(new Xunit1TestCase[0], Substitute.For<IMessageSink>()); var xml = new XmlDocument(); xml.LoadXml("<class time='1.234' total='4' failed='3' skipped='2' />"); handler.OnXmlNode(xml.FirstChild); Assert.Equal(1.234M, handler.TestClassResults.Time); Assert.Equal(4, handler.TestClassResults.Total); Assert.Equal(3, handler.TestClassResults.Failed); Assert.Equal(2, handler.TestClassResults.Skipped); }
public static void WithTestNode_ParsesNumberWithInvariantCulture() { var sink = Substitute.For<IMessageSink>(); var testCase = new Xunit1TestCase("assembly", "config", "foo", "bar", "foo.bar"); var handler = new TestClassCallbackHandler(new [] { testCase }, sink); var xml = new XmlDocument(); xml.LoadXml("<test type='foo' method='bar' name='foo.bar' time='1.234' result='Pass' />"); handler.OnXmlNode(xml.FirstChild); var args = sink.Captured(1, x => x.OnMessage(null)); var message = args.Arg<ITestFinished>(); Assert.Equal(1.234M, message.ExecutionTime); }
public static void WithTestNode_OutputResultsInOutputMessage() { var sink = Substitute.For<IMessageSink>(); var testCase = new Xunit1TestCase("assembly", "config", "foo", "bar", "foo.bar"); var handler = new TestClassCallbackHandler(new[] { testCase }, sink); var xml = new XmlDocument(); xml.LoadXml("<test type='foo' method='bar' name='foo.bar' time='1.234' result='Pass'><output>This is output text</output></test>"); handler.OnXmlNode(xml.FirstChild); var args = sink.Captured(0, x => x.OnMessage(null)); var message = args.Arg<ITestOutput>(); Assert.Same(testCase, message.TestCase); Assert.Equal("This is output text", message.Output); }
Xunit1RunSummary RunTestClass(ITestClass testClass, IList <ITestCase> testCases, IMessageSink messageSink) { var handler = new TestClassCallbackHandler(testCases, messageSink); var results = handler.TestClassResults; results.Continue = messageSink.OnMessage(new TestClassStarting(testCases, testClass)); if (results.Continue) { var methodNames = testCases.Select(tc => tc.TestMethod.Method.Name).ToList(); executor.RunTests(testClass.Class.Name, methodNames, handler); handler.LastNodeArrived.WaitOne(); } results.Continue = messageSink.OnMessage(new TestClassFinished(testCases, testClass, results.Time, results.Total, results.Failed, results.Skipped)) && results.Continue; return(results); }
RunSummary RunTestClass(ITestCollection testCollection, string className, IList<Xunit1TestCase> testCases, IMessageSink messageSink) { var handler = new TestClassCallbackHandler(testCases, messageSink); var results = handler.TestClassResults; results.Continue = messageSink.OnMessage(new TestClassStarting(testCollection, className)); if (results.Continue) { try { var methodNames = testCases.Select(tc => tc.Method.Name).ToList(); executor.RunTests(className, methodNames, handler); handler.LastNodeArrived.WaitOne(); } catch (Exception ex) { var stackTrace = ex.StackTrace; var rethrowIndex = stackTrace.IndexOf("$$RethrowMarker$$"); if (rethrowIndex > -1) stackTrace = stackTrace.Substring(0, rethrowIndex); results.Continue = messageSink.OnMessage(new ErrorMessage(ex.GetType().FullName, ex.Message, stackTrace)) && results.Continue; } } results.Continue = messageSink.OnMessage(new TestClassFinished(testCollection, className, results.Time, results.Total, results.Failed, results.Skipped)) && results.Continue; return results; }
RunSummary RunTestClass(ITestCollection testCollection, string className, IList<Xunit1TestCase> testCases, IMessageSink messageSink) { var handler = new TestClassCallbackHandler(testCases, messageSink); var results = handler.TestClassResults; results.Continue = messageSink.OnMessage(new TestClassStarting(testCollection, className)); if (results.Continue) { try { var methodNames = testCases.Select(tc => tc.Method.Name).ToList(); executor.RunTests(className, methodNames, handler); handler.LastNodeArrived.WaitOne(); } catch (Exception ex) { var failureInformation = Xunit1ExceptionUtility.ConvertToFailureInformation(ex); results.Continue = messageSink.OnMessage(new ErrorMessage(failureInformation.ExceptionTypes, failureInformation.Messages, failureInformation.StackTraces, failureInformation.ExceptionParentIndices)) && results.Continue; } } results.Continue = messageSink.OnMessage(new TestClassFinished(testCollection, className, results.Time, results.Total, results.Failed, results.Skipped)) && results.Continue; return results; }