public void TestAddResult()
        {
            var sut = new ResultSummary();

            Assert.Empty(sut.Results);
            Assert.Equal(TimeSpan.Zero, sut.ExecutionTime);
            Assert.Equal(0, sut.Failed);
            Assert.Equal(0, sut.Skipped);
            Assert.Equal(0, sut.Total);

            var result = new Result("abc.dll");

            result.SetExecutionCompleteInfo(new Xunit.Runners.ExecutionCompleteInfo(10, 5, 2, 1.5M));
            sut.AddResult(result);
#if NET35
            Assert.Equal(1, sut.Results.Count);
#else
            Assert.Single(sut.Results);
#endif
            Assert.Equal(new TimeSpan(0, 0, 0, 1, 500), sut.ExecutionTime);
            Assert.Equal(10, sut.Total);
            Assert.Equal(5, sut.Failed);
            Assert.Equal(2, sut.Skipped);

            result = new Result("abc.dll");
            result.SetExecutionCompleteInfo(new Xunit.Runners.ExecutionCompleteInfo(15, 8, 3, 3.512M));
            sut.AddResult(result);
#if NET35
            Assert.Equal(1, sut.Results.Count);
#else
            Assert.Single(sut.Results);
#endif
            Assert.Equal(new TimeSpan(0, 0, 0, 3, 512), sut.ExecutionTime);
            Assert.Equal(15, sut.Total);
            Assert.Equal(8, sut.Failed);
            Assert.Equal(3, sut.Skipped);

            result = new Result("xyz.dll");
            result.SetExecutionCompleteInfo(new Xunit.Runners.ExecutionCompleteInfo(3, 1, 2, 1M));
            sut.AddResult(result);
            Assert.Equal(2, sut.Results.Count);
            Assert.Equal(new TimeSpan(0, 0, 0, 4, 512), sut.ExecutionTime);
            Assert.Equal(18, sut.Total);
            Assert.Equal(9, sut.Failed);
            Assert.Equal(5, sut.Skipped);
        }
        public void OneTimeSetUp()
        {
            string testResultsFile = Path.Combine(TestContext.CurrentContext.TestDirectory, "MockTestResult.xml");

            using (var reader = new StreamReader(testResultsFile))
                _testResults = XDocument.Load(reader);

            _testRun    = _testResults.Element("test-run");
            _testSuites = _testRun.Elements("test-suite");

            _summary = new ResultSummary();
            foreach (var element in _testSuites)
            {
                _summary.AddResult(element);
            }

            _summaryResults = _summary.GetTestResults();
            _summaryTestRun = _summaryResults.Element("test-run");
        }
Example #3
0
        public void OneTimeSetUp()
        {
            string testDirectory   = Path.GetDirectoryName(typeof(ResultSummaryTests).GetTypeInfo().Assembly.Location);
            string testResultsFile = Path.Combine(testDirectory, "MockTestResult.xml");

            using (var stream = new FileStream(testResultsFile, FileMode.Open))
                using (var reader = new StreamReader(stream))
                    _testResults = XDocument.Load(reader);

            _testRun    = _testResults.Element("test-run");
            _testSuites = _testRun.Elements("test-suite");

            _summary = new ResultSummary();
            foreach (var element in _testSuites)
            {
                _summary.AddResult(element);
            }

            _summaryResults = _summary.GetTestResults();
            _summaryTestRun = _summaryResults.Element("test-run");
        }
        int Execute()
        {
            DisplayRuntimeEnvironment();

            DisplayTestFiles();

            IEnumerable <string>         testList = SetupSinks();
            IDictionary <string, object> settings = GetTestSettings();

            // We display the filters at this point so  that any exception message
            // thrown by CreateTestFilter will be understandable.
            DisplayTestFilters();

            // Apply filters and merge with testList
            var filter = CreateTestFilter(testList);

            var summary = new ResultSummary();

            // Load the test framework
            foreach (var assembly in _options.InputFiles)
            {
                // TODO: Load async
                var assemblyPath  = System.IO.Path.GetFullPath(assembly);
                var testAssembly  = LoadAssembly(assemblyPath);
                var frameworkPath = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(assemblyPath), "nunit.framework.dll");
                var framework     = LoadAssembly(frameworkPath);

                var driver = new NUnitPortableDriver();
                var result = driver.Load(framework, testAssembly, settings);

                // TODO: Run async
                // Explore or Run
                if (_options.List || _options.Explore)
                {
                    ITestListener listener = new TestExploreListener(_testDiscoverySink, _options, assemblyPath);
                    string        xml      = driver.Explore(filter.Text);
                    listener.OnTestEvent(xml);
                    summary.AddResult(xml);
                }
                else
                {
                    var tcListener = new TeamCityEventListener();
                    TestExecutionListener listener = new TestExecutionListener(_testExecutionSink, _options, assemblyPath);
                    SetupLabelOutput(listener);
                    string xml = driver.Run(
                        report =>
                    {
                        listener.OnTestEvent(report);
                        if (_options.TeamCity)
                        {
                            tcListener.OnTestEvent(report);
                        }
                    },
                        filter.Text);
                    summary.AddResult(xml);
                }
            }

            if (_options.List || _options.Explore)
            {
                if (_options.DesignTime)
                {
                    _testDiscoverySink.SendTestCompleted();
                }

                return(ReturnCodes.OK);
            }

            if (_options.DesignTime)
            {
                _testExecutionSink.SendTestCompleted();
                return(ReturnCodes.OK);
            }

            // Summarize and save test results
            var reporter = new ResultReporter(summary, ColorConsole, _options);

            reporter.ReportResults();

            // Save out the TestResult.xml
            SaveTestResults(reporter.TestResults);

            if (summary.UnexpectedError)
            {
                return(ReturnCodes.UNEXPECTED_ERROR);
            }

            if (summary.InvalidAssemblies > 0)
            {
                return(ReturnCodes.INVALID_ASSEMBLY);
            }

            if (summary.InvalidTestFixtures > 0)
            {
                return(ReturnCodes.INVALID_TEST_FIXTURE);
            }

            // Return the number of test failures
            return(summary.FailedCount);
        }