예제 #1
0
            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);
                        }
                    }
                }
            }
        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();
            }
        }
예제 #4
0
        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);
            }
        }
예제 #5
0
        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);
        }