public override TestResult Run(EventListener listener, ITestFilter filter) { listener.TestStarted(base.TestName); long ticks = DateTime.Now.Ticks; var testResult = new TestResultShim(); Exception existingError = null; _globalSetup.PrepareForTestPosition(Position, out existingError); if (existingError != null) { TestResultUtil.Error(testResult, TestExtensions.GetMultilineName(this), existingError, null, TestResultShim.Site.SetUp); } else { List<string> traceMessages = null; try { RunTestMethod(testResult, out traceMessages); } catch (Exception e) { var globalTraceMessages = _globalSetup.GetTraceMessages(); TestResultUtil.Error(testResult, TestExtensions.GetMultilineName(this), e, globalTraceMessages.Concat(traceMessages)); } } var nunitTestResult = new TestResult(this); NativeTestResult.ApplyToNunitResult(testResult, nunitTestResult); nunitTestResult.Time = ((DateTime.Now.Ticks - ticks)) / 10000000.0; listener.TestFinished(nunitTestResult); return nunitTestResult; }
public void NotifyEnd(string testFullName, TestResultShim testResult) { var test = _tests[testFullName]; var result = new TestResult(test) { Outcome = MapToOutcome(testResult), DisplayName = testFullName }; if (result.Outcome == TestOutcome.Failed) { result.ErrorMessage = testResult.FailureReason; result.ErrorStackTrace = testResult.FailureStackTrace; } else if (result.Outcome == TestOutcome.Skipped) { // TODO: can we include the reason skipped in VS output somehow? result.Messages.Add( new TestResultMessage("ReasonSkipped", testResult.ReasonSkipped)); } _frameworkHandle.RecordEnd(test, result.Outcome); _frameworkHandle.RecordResult(result); }
public TestOutcome MapToOutcome(TestResultShim shim) { switch(shim.Status) { case TestResultShim.Result.Successs: return TestOutcome.Passed; case TestResultShim.Result.Error: return TestOutcome.Failed; case TestResultShim.Result.Skipped: return TestOutcome.Skipped; default: throw new ArgumentOutOfRangeException(); } }
public static TestResultShim RunTest(TestContext testContext, List<string> traceMessages) { var startTime = DateTime.UtcNow; var testResult = new TestResultShim(); Exception existingError = testContext.FixtureContext.GlobalSetupManager.PrepareForTestPosition(testContext.Position); if (existingError != null) { TestResultUtil.Error(testResult, testContext.Name.MultilineName, existingError, null, TestResultShim.Site.SetUp); } else { traceMessages.AddRange(testContext.FixtureContext.GlobalSetupManager.GetTraceMessages()); try { List<string> traceMessages1 = traceMessages; traceMessages1 = traceMessages1 ?? new List<string>(); var executionContext = new NJasmineTestRunContext(testContext.Position, testContext.FixtureContext.GlobalSetupManager, traceMessages1); var runner = new NJasmineTestRunner(executionContext); SpecificationFixture fixture = testContext.FixtureContext.FixtureFactory(); fixture.CurrentPosition = TestPosition.At(0); fixture.Visitor = runner; try { fixture.Run(); } finally { executionContext.RunAllPerTestTeardowns(); } testResult.Success(); } catch (Exception e) { TestResultUtil.Error(testResult, testContext.Name.MultilineName, e, traceMessages); } } testResult.SetExecutionTime(DateTime.UtcNow - startTime); return testResult; }
public static TestResultShim RunTest(TestContext testContext, List <string> traceMessages) { var startTime = DateTime.UtcNow; var testResult = new TestResultShim(); Exception existingError = testContext.FixtureContext.GlobalSetupManager.PrepareForTestPosition(testContext.Position); if (existingError != null) { TestResultUtil.Error(testResult, testContext.Name.MultilineName, existingError, null, TestResultShim.Site.SetUp); } else { traceMessages.AddRange(testContext.FixtureContext.GlobalSetupManager.GetTraceMessages()); try { List <string> traceMessages1 = traceMessages; traceMessages1 = traceMessages1 ?? new List <string>(); var executionContext = new NJasmineTestRunContext(testContext.Position, testContext.FixtureContext.GlobalSetupManager, traceMessages1); var runner = new NJasmineTestRunner(executionContext); SpecificationFixture fixture = testContext.FixtureContext.FixtureFactory(); fixture.CurrentPosition = TestPosition.At(0); fixture.Visitor = runner; try { fixture.Run(); } finally { executionContext.RunAllPerTestTeardowns(); } testResult.Success(); } catch (Exception e) { TestResultUtil.Error(testResult, testContext.Name.MultilineName, e, traceMessages); } } testResult.SetExecutionTime(DateTime.UtcNow - startTime); return(testResult); }
private static FailureSite GetNUnitFailureSite(TestResultShim.Site site) { switch (site) { case TestResultShim.Site.Test: return FailureSite.Test; case TestResultShim.Site.SetUp: return FailureSite.SetUp; case TestResultShim.Site.TearDown: return FailureSite.TearDown; case TestResultShim.Site.Parent: return FailureSite.Parent; case TestResultShim.Site.Child: return FailureSite.Child; default: throw new ArgumentOutOfRangeException("site"); } }
public static TestResult ApplyToNunitResult(TestResultShim shim, TestResult result) { switch (shim.Status) { case TestResultShim.Result.Successs: result.Success(); break; case TestResultShim.Result.Error: result.SetResult(ResultState.Error, shim.FailureReason, shim.FailureStackTrace, GetNUnitFailureSite(shim.FailureSite)); break; default: throw new ArgumentOutOfRangeException(); } result.Time = shim.ExecutionTime.Seconds; return result; }
protected override void DoOneTimeTearDown(TestResult suiteResult) { try { _testContext.FixtureContext.GlobalSetupManager.Cleanup(_testContext.Position); } catch (Exception innerException) { NUnitException exception2 = innerException as NUnitException; if (exception2 != null) { innerException = exception2.InnerException; } var shim = new TestResultShim(); TestResultUtil.Error(shim, suiteResult.Test.GetMultilineName(), innerException, null, TestResultShim.Site.TearDown); NativeTestResult.ApplyToNunitResult(shim, suiteResult); } }
protected override void DoOneTimeTearDown(TestResult suiteResult) { try { _oneTimeTeardown(); } catch (Exception innerException) { NUnitException exception2 = innerException as NUnitException; if (exception2 != null) { innerException = exception2.InnerException; } var shim = new TestResultShim(); TestResultUtil.Error(shim, suiteResult.Test.GetMultilineName(), innerException, null, TestResultShim.Site.TearDown); NativeTestResult.ApplyToNunitResult(shim, suiteResult); } }
public void RunTestMethodInner(TestResultShim testResult, out List<string> traceMessages) { traceMessages = new List<string>(); var executionContext = new NJasmineTestRunContext(Position, _globalSetup, traceMessages); var runner = new NJasmineTestRunner(executionContext); SpecificationFixture fixture = this._fixtureFactory(); fixture.CurrentPosition = new TestPosition(0); fixture.Visitor = runner; try { fixture.Run(); } finally { executionContext.RunAllPerTestTeardowns(); } testResult.Success(); }
public static void Error(TestResultShim testResult, string multilineName, Exception exception, IEnumerable<string> traceMessages, TestResultShim.Site failureSite = TestResultShim.Site.Test) { traceMessages = traceMessages ?? new List<string>(); testResult.SetError(BuildMessage(exception), BuildStackTrace(exception, multilineName, traceMessages), failureSite); }
public void RunTestMethod(TestResultShim testResult, out List<string> traceMessages) { RunTestMethodInner(testResult, out traceMessages); }
public static void Error(TestResultShim testResult, string multilineName, Exception exception, IEnumerable <string> traceMessages, TestResultShim.Site failureSite = TestResultShim.Site.Test) { traceMessages = traceMessages ?? new List <string>(); testResult.SetError(BuildMessage(exception), BuildStackTrace(exception, multilineName, traceMessages), failureSite); }
public void RunTests(string assemblyName, string[] testNames, string explictlyIncluding, ITestResultListener listener) { using(var nativeTestFactory = RunTestDiscovery(Assembly.Load(assemblyName), t => true)) { foreach(var name in testNames) { var testContext = nativeTestFactory.Contexts[name]; var ignoreReason = nativeTestFactory.GetIgnoreReason(name, explictlyIncluding); listener.NotifyStart(testContext.Name.FullName); List<string> traceMessages = new List<string>(); if (ignoreReason == null) { var result = SpecificationRunner.RunTest(testContext, traceMessages); listener.NotifyEnd(testContext.Name.FullName, result); } else { var result = new TestResultShim(); result.SetSkipped(ignoreReason); listener.NotifyEnd(testContext.Name.FullName, result); } } } }
void expect_test_to_observe(TestPosition testPosition, List<string> expected) { var fixture = new has_test_in_loop(); var method = new NJasmineTestMethod(() => fixture, testPosition, new FakeGlobalSetupManager()); TestResultShim result = new TestResultShim(); List<string> ignored; method.RunTestMethodInner(result, out ignored); expect(() => result.IsSuccess); Assert.That(fixture.Observations, Is.EquivalentTo(expected)); }