/// <summary> /// Run the tests in the loaded TestPackage and return a test result. The tests /// are run synchronously and the listener interface is notified as it progresses. /// </summary> /// <param name="listener">An ITestEventHandler to receive events</param> /// <param name="filter">A TestFilter used to select tests</param> /// <returns>A TestEngineResult giving the result of the test execution</returns> protected override TestEngineResult RunTests(ITestEventListener listener, TestFilter filter) { IsTestRunning = true; if (listener != null) { listener.OnTestEvent(string.Format("<start-run count='{0}'/>", CountTestCases(filter))); } DateTime startTime = DateTime.UtcNow; long startTicks = Stopwatch.GetTimestamp(); TestEngineResult result = _realRunner.Run(listener, filter).Aggregate("test-run", TestPackage.Name, TestPackage.FullName); result.Xml.InsertEnvironmentElement(); double duration = (double)(Stopwatch.GetTimestamp() - startTicks) / Stopwatch.Frequency; result.Xml.AddAttribute("start-time", XmlConvert.ToString(startTime, "u")); result.Xml.AddAttribute("end-time", XmlConvert.ToString(DateTime.UtcNow, "u")); result.Xml.AddAttribute("duration", duration.ToString("0.000000", NumberFormatInfo.InvariantInfo)); IsTestRunning = false; if (listener != null) { listener.OnTestEvent(result.Xml.OuterXml); } return(result); }
private void OnTestStarted(TestName testName, bool isSuite) { string report = string.Format( "<{0} id=\"{1}\" name=\"{2}\" fullname=\"{3}\"/>", isSuite ? "start-suite" : "start-test", testName.TestID, FormatAttributeValue(testName.Name), FormatAttributeValue(testName.FullName)); _listener.OnTestEvent(report); }
public void SendTo(ITestEventListener listener) { foreach (string report in Reports) { listener.OnTestEvent(report); } }
public void IssuePendingNotifications(ITestEventListener listener) { lock (_trackerLock) { int count = _itemsInProcess.Count; // Signal completion of all pending suites, in reverse order while (count > 0) { listener.OnTestEvent(CreateNotification(_itemsInProcess[--count])); } } }
/// <summary> /// Run the tests in the loaded TestPackage and return a test result. The tests /// are run synchronously and the listener interface is notified as it progresses. /// </summary> /// <param name="listener">An ITestEventHandler to receive events</param> /// <param name="filter">A TestFilter used to select tests</param> /// <returns>A TestEngineResult giving the result of the test execution</returns> protected override TestEngineResult RunTests(ITestEventListener listener, TestFilter filter) { IsTestRunning = true; if (listener != null) { listener.OnTestEvent(string.Format("<start-run count='{0}'/>", CountTestCases(filter))); } DateTime startTime = DateTime.UtcNow; long startTicks = Stopwatch.GetTimestamp(); TestEngineResult result = _realRunner.Run(listener, filter).Aggregate("test-run", TestPackage.Name, TestPackage.FullName); // These are inserted in reverse order, since each is added as the first child. InsertFilterElement(result.Xml, filter); InsertCommandLineElement(result.Xml); result.Xml.AddAttribute("engine-version", Assembly.GetExecutingAssembly().GetName().Version.ToString()); result.Xml.AddAttribute("clr-version", Environment.Version.ToString()); double duration = (double)(Stopwatch.GetTimestamp() - startTicks) / Stopwatch.Frequency; result.Xml.AddAttribute("start-time", XmlConvert.ToString(startTime, "u")); result.Xml.AddAttribute("end-time", XmlConvert.ToString(DateTime.UtcNow, "u")); result.Xml.AddAttribute("duration", duration.ToString("0.000000", NumberFormatInfo.InvariantInfo)); IsTestRunning = false; if (listener != null) { listener.OnTestEvent(result.Xml.OuterXml); } return(result); }
// Return the result of a test run as a TestEngineResult. ProgressMessages // preceding the final CommandReturnMessage are handled as well. private TestEngineResult TestRunResult(ITestEventListener listener) { var rdr = new SocketReader(_socket, _wireProtocol); while (true) { var receivedMessage = rdr.GetNextMessage(); var receivedType = receivedMessage.GetType(); var returnMessage = receivedMessage as CommandReturnMessage; if (returnMessage != null) { return((TestEngineResult)returnMessage.ReturnValue); } var progressMessage = receivedMessage as ProgressMessage; if (progressMessage == null) { throw new InvalidOperationException($"Expected either a ProgressMessage or a CommandReturnMessage but received a {receivedType}"); } listener.OnTestEvent(progressMessage.Report); } }
/// <summary> /// Run the tests in the loaded TestPackage and return a test result. The tests /// are run synchronously and the listener interface is notified as it progresses. /// </summary> /// <param name="listener">An ITestEventHandler to receive events</param> /// <param name="filter">A TestFilter used to select tests</param> /// <returns>A TestEngineResult giving the result of the test execution</returns> protected override TestEngineResult RunTests(ITestEventListener listener, TestFilter filter) { IsTestRunning = true; if (listener != null) listener.OnTestEvent(string.Format("<start-run count='{0}'/>", CountTestCases(filter))); DateTime startTime = DateTime.UtcNow; long startTicks = Stopwatch.GetTimestamp(); TestEngineResult result = _realRunner.Run(listener, filter).Aggregate("test-run", TestPackage.Name, TestPackage.FullName); // These are inserted in reverse order, since each is added as the first child. result.Xml.InsertFilterElement(filter); result.Xml.InsertSettingsElement(EffectiveSettings); result.Xml.InsertCommandLineElement(); result.Xml.InsertEnvironmentElement(); double duration = (double)(Stopwatch.GetTimestamp() - startTicks) / Stopwatch.Frequency; result.Xml.AddAttribute("start-time", XmlConvert.ToString(startTime, "u")); result.Xml.AddAttribute("end-time", XmlConvert.ToString(DateTime.UtcNow, "u")); result.Xml.AddAttribute("duration", duration.ToString("0.000000", NumberFormatInfo.InvariantInfo)); IsTestRunning = false; if (listener != null) listener.OnTestEvent(result.Xml.OuterXml); return result; }