Beispiel #1
0
        public Task <TestSuiteResult> RunTestsAsync(string dllPath)
        {
            return(Task.Run(() =>
            {
                var package = new TestPackage(dllPath);

                using (var engine = new TestEngine())
                {
                    engine.Services.Add(new SettingsService(false));
                    engine.Services.Add(new ExtensionService());
                    engine.Services.Add(new DriverService());
                    engine.Services.Add(new InProcessTestRunnerFactory());
                    engine.Services.Add(new ProjectService());          // +
                    engine.Services.Add(new RuntimeFrameworkService()); // +
                    engine.Services.Add(new TestFilterService());       // +
                    engine.Services.Add(new DomainManager());           // -
                    engine.Services.Add(new ResultService());
                    engine.Services.ServiceManager.StartServices();

                    using (global::NUnit.Engine.ITestRunner runner = engine.GetRunner(package))
                    {
                        try
                        {
                            var filter = TestFilter.Empty;
                            var result = runner.Run(new TestEventDispatcher(), filter);

                            if (result == null)
                            {
                                return TestSuiteResult.Error("No results", TimeSpan.Zero);
                            }

                            runner.Unload();
                            var parsedResults = CreateResult(result);
                            return parsedResults;
                        }
                        catch (Exception ex)
                        {
                            TryStopRunner(runner);
                            return TestSuiteResult.Error($"Unkown nunit error: {ex.Message}", TimeSpan.Zero);
                        }
                    }
                }
            }));
        }
Beispiel #2
0
        private TestSuiteResult CreateResult(XmlNode result)
        {
            var nUnitTestCaseResultMaker = new NUnitTestCaseResultMaker();

            if (result.Name != "test-run")
            {
                return(TestSuiteResult.Error("Expected <test-run> as top-level element but was <" + result.Name + ">", TimeSpan.Zero));
            }

            var name            = result.GetAttribute("name");
            var testCaseResults = nUnitTestCaseResultMaker.CreateTestCaseResult(result);
            var duration        = double.Parse(result.GetAttribute("duration"), CultureInfo.InvariantCulture);

            return(new TestSuiteResult
            {
                Name = name,
                TestResults = testCaseResults,
                InnerXml = result.InnerXml,
                ExecutionTime = TimeSpan.FromSeconds(duration),
                IsSuccess = testCaseResults.All(t => t.IsSuccess)
            });
        }