Beispiel #1
0
        void WriteResultsToXml(ITestResultAdaptor result, XmlWriter xmlWriter)
        {
            // XML format as specified at https://github.com/nunit/docs/wiki/Test-Result-XML-Format

            var testRunNode = new TNode(k_TestRunNode);

            testRunNode.AddAttribute(k_Id, "2");
            testRunNode.AddAttribute(k_Testcasecount, (result.PassCount + result.FailCount + result.SkipCount + result.InconclusiveCount).ToString());
            testRunNode.AddAttribute(k_Result, result.ResultState.ToString());
            testRunNode.AddAttribute(k_Total, (result.PassCount + result.FailCount + result.SkipCount + result.InconclusiveCount).ToString());
            testRunNode.AddAttribute(k_Passed, result.PassCount.ToString());
            testRunNode.AddAttribute(k_Failed, result.FailCount.ToString());
            testRunNode.AddAttribute(k_Inconclusive, result.InconclusiveCount.ToString());
            testRunNode.AddAttribute(k_Skipped, result.SkipCount.ToString());
            testRunNode.AddAttribute(k_Asserts, result.AssertCount.ToString());
            testRunNode.AddAttribute(k_EngineVersion, k_nUnitVersion);
            testRunNode.AddAttribute(k_ClrVersion, Environment.Version.ToString());
            testRunNode.AddAttribute(k_StartTime, result.StartTime.ToString(k_TimeFormat));
            testRunNode.AddAttribute(k_EndTime, result.EndTime.ToString(k_TimeFormat));
            testRunNode.AddAttribute(k_Duration, result.Duration.ToString());

            var resultNode = result.ToXml();

            testRunNode.ChildNodes.Add(resultNode);

            testRunNode.WriteTo(xmlWriter);
        }
Beispiel #2
0
        public TestState GetTestStateFromResult(ITestResultAdaptor result)
        {
            var state = TestState.Failure;

            if (result.TestStatus == TestStatus.Passed)
            {
                state = TestState.Success;
            }
            else if (result.TestStatus == TestStatus.Skipped)
            {
                state = TestState.Skipped;

                if (result.ResultState.ToLowerInvariant().EndsWith("ignored"))
                {
                    state = TestState.Ignored;
                }
            }
            else
            {
                if (result.ResultState.ToLowerInvariant().Equals("inconclusive"))
                {
                    state = TestState.Inconclusive;
                }

                if (result.ResultState.ToLowerInvariant().EndsWith("cancelled") ||
                    result.ResultState.ToLowerInvariant().EndsWith("error"))
                {
                    state = TestState.Error;
                }
            }

            return(state);
        }
        public void RunFinished(ITestResultAdaptor result)
        {
            if (RerunCallbackData.instance.runFilters == null)
            {
                RerunCallbackData.instance.runFilters = new[] { new TestRunnerFilter() }
            }
            ;

            var runFilter = RerunCallbackData.instance.runFilters[0];

            if (useMockRunFilter)
            {
                runFilter = mockRunFilter;
            }

            runFilter.testRepetitions--;
            if (runFilter.testRepetitions <= 0 || result.TestStatus != TestStatus.Passed)
            {
                ExitCallbacks.preventExit = false;
                return;
            }

            ExitCallbacks.preventExit = true;
            if (EditorApplication.isPlaying)
            {
                EditorApplication.playModeStateChanged += WaitForExitPlaymode;
                return;
            }

            if (!useMockRunFilter)
            {
                ExecuteTestRunnerAPI();
            }
        }
    public void RunFinished(ITestResultAdaptor result)
    {
        if (!result.HasChildren)
        {
            EditorUtility.DisplayDialog("Validation Test Result", "No tests were found to run. Are you sure this is a scene that can be validated?", "OK");
        }
        else if (result.FailCount == 0)
        {
            EditorUtility.DisplayDialog("Validation Test Result", $"All {result.PassCount} validation tests passed.", "OK");
        }
        else
        {
            IEnumerable <string> GetFailedTestNames(ITestResultAdaptor test)
            {
                if (test.HasChildren)
                {
                    return(test.Children.SelectMany(GetFailedTestNames));
                }

                return(test.TestStatus == TestStatus.Failed ? new[] { test.Name } : Array.Empty <string>());
            }

            string failedTestNames = string.Join("\n", GetFailedTestNames(result));

            EditorUtility.DisplayDialog("Validation Test Result", $"{result.FailCount} tests failed:\n{failedTestNames}", "Go to Test Runner");
            EditorApplication.ExecuteMenuItem("Window/General/Test Runner");
        }

        DestroyImmediate(this);
    }
Beispiel #5
0
        public TestResultAdaptor(ITestResultAdaptor testResultAdaptor, int parent)
        {
            Name     = testResultAdaptor.Name;
            FullName = testResultAdaptor.FullName;

            PassCount         = testResultAdaptor.PassCount;
            FailCount         = testResultAdaptor.FailCount;
            InconclusiveCount = testResultAdaptor.InconclusiveCount;
            SkipCount         = testResultAdaptor.SkipCount;

            switch (testResultAdaptor.TestStatus)
            {
            case UnityEditor.TestTools.TestRunner.Api.TestStatus.Passed:
                TestStatus = TestStatusAdaptor.Passed;
                break;

            case UnityEditor.TestTools.TestRunner.Api.TestStatus.Skipped:
                TestStatus = TestStatusAdaptor.Skipped;
                break;

            case UnityEditor.TestTools.TestRunner.Api.TestStatus.Inconclusive:
                TestStatus = TestStatusAdaptor.Inconclusive;
                break;

            case UnityEditor.TestTools.TestRunner.Api.TestStatus.Failed:
                TestStatus = TestStatusAdaptor.Failed;
                break;
            }

            Parent = parent;
        }
 public void RunFinished(ITestResultAdaptor result)
 {
     if (m_TimeoutCallback != null)
     {
         m_TimeoutCallback.Clear();
     }
 }
Beispiel #7
0
        private static string ExtractOutput(ITestResultAdaptor testResult)
        {
            var stringBuilder = new StringBuilder();

            if (testResult.Message != null)
            {
                stringBuilder.AppendLine("Message: ");
                stringBuilder.AppendLine(testResult.Message);
            }

            if (!string.IsNullOrEmpty(testResult.Output))
            {
                stringBuilder.AppendLine("Output: ");
                stringBuilder.AppendLine(testResult.Output);
            }

            if (!string.IsNullOrEmpty(testResult.StackTrace))
            {
                stringBuilder.AppendLine("Stacktrace: ");
                stringBuilder.AppendLine(testResult.StackTrace);
            }

            var result = stringBuilder.ToString();

            if (result.Length > 0)
            {
                return(result);
            }

            return(testResult.Output ?? string.Empty);
        }
 public void RunFinished(ITestResultAdaptor result)
 {
     Result    = result;
     PassCount = Result.PassCount;
     SkipCount = Result.SkipCount;
     Failed    = Result.FailCount > 0;
 }
Beispiel #9
0
    public void RunFinished(ITestResultAdaptor result)
    {
        if (!result.HasChildren)
        {
            EditorUtility.DisplayDialog("알림", "해당씬은 등록된 테스트Case가 없습니다.", "OK");
        }
        else if (result.FailCount == 0)
        {
            EditorUtility.DisplayDialog("알림", "테스트가 모두 성공했습니다.", "OK");
        }
        else
        {
            IEnumerable <string> GetFailedTestNames(ITestResultAdaptor test)
            {
                if (test.HasChildren)
                {
                    return(test.Children.SelectMany(GetFailedTestNames));
                }

                return(test.TestStatus == TestStatus.Failed ? new[] { test.Name } : Array.Empty <string>());
            }

            string failedTestNames = string.Join("\n", GetFailedTestNames(result));
            EditorUtility.DisplayDialog("알림",
                                        $"실패하였습니다. ({result.FailCount} 개)\n" +
                                        $"{failedTestNames}",
                                        "OK");
            EditorApplication.ExecuteMenuItem("Window/General/Test Runner");
        }

        DestroyImmediate(this);
    }
Beispiel #10
0
 public void TestFinished(ITestResultAdaptor result)
 {
     if (!result.Test.IsSuite && (result.TestStatus == TestStatus.Failed))
     {
         m_RunFailed = true;
     }
 }
        public void RunFinished(ITestResultAdaptor testResults)
        {
            if (!Coverage.enabled)
            {
                return;
            }

            if (CoverageRunData.instance.isRecording || m_IsConnectedToPlayer)
            {
                return;
            }

            CoverageRunData.instance.Stop();

            if (!CoverageRunData.instance.DidTestsRun())
            {
                return;
            }

            ICoverageReporter coverageReporter = m_CoverageReporterManager.CoverageReporter;

            if (coverageReporter != null)
            {
                coverageReporter.OnRunFinished(testResults);
            }

            m_CoverageReporterManager.GenerateReport();
        }
Beispiel #12
0
 public void TestFinished(ITestResultAdaptor result)
 {
     if (!result.Test.IsSuite && (result.TestStatus == TestStatus.Failed || result.TestStatus == TestStatus.Inconclusive))
     {
         ExitCallbacksDataHolder.instance.RunFailed = true;
     }
 }
        private static void ReportRunFinished(ITestResultAdaptor testResult)
        {
            SetUpIfNeeded();

            var activeRuns = TestJobDataHolder.instance.TestRuns;

            if (activeRuns.Count == 0)
            {
                return;
            }

            var executionSettings = activeRuns[0].executionSettings;
            var filter            = executionSettings.filters.First();
            var runFinishedData   = new RunFinishedData()
            {
                totalTests           = testResult.Test.TestCaseCount,
                numPassedTests       = testResult.PassCount,
                numFailedTests       = testResult.FailCount,
                numInconclusiveTests = testResult.InconclusiveCount,
                numSkippedTests      = testResult.SkipCount,
                testModeFilter       = (int)filter.testMode,
                targetPlatform       = executionSettings.targetPlatform != null?executionSettings.targetPlatform.ToString() : "editor",
                                           runSynchronously  = executionSettings.runSynchronously,
                                           isCustomRunner    = false,
                                           isFiltering       = executionSettings.filters.Any(f => f.HasAny()),
                                           isAutomated       = IsCommandLineArgSet("-automated"),
                                           isFromCommandLine = IsCommandLineArgSet("-runTests"),
                                           totalTestDuration = testResult.Duration,
                                           totalRunDuration  = (DateTime.Now - Convert.ToDateTime(activeRuns[0].startTime)).TotalSeconds
            };

            EditorAnalytics.SendEventWithLimit(RunFinishedEventName, runFinishedData, 1);
        }
Beispiel #14
0
        public string GetRunStateFromResultNunitXml(ITestResultAdaptor result)
        {
            var doc = new XmlDocument();

            doc.LoadXml(result.ToXml().OuterXml);
            return(doc.FirstChild.Attributes["runstate"].Value);
        }
 public void OnTestFinished(ITestResultAdaptor result)
 {
     if (m_OutputPerTest)
     {
         OutputCoverageReport(result);
     }
 }
Beispiel #16
0
        public void RunFinished(ITestResultAdaptor results)
        {
            if (silent && results.FailCount == 0)
            {
                return;
            }

            if (verbose || results.FailCount > 0)
            {
                CLITools.PrintBanner("Tests");
                PrintTest(results, 0);
            }

            Console.WriteLine();
            CLITools.PrintInlineBanner("Test Summary");
            Console.WriteLine(" Passed: " + results.PassCount);
            Console.WriteLine(" Failed: " + results.FailCount);
            Console.WriteLine(" Skipped/Inconclusive: " + (results.SkipCount + results.InconclusiveCount));
            CLITools.PrintBannerBar();
            Console.WriteLine();

            if (results.FailCount > 0)
            {
                throw new Exception("Fix your tests, dag nabbit!");
            }
        }
 public void RunFinished(ITestResultAdaptor testResults)
 {
     if (TestRunnerWindow.s_Instance != null)
     {
         TestRunnerWindow.s_Instance.RebuildUIFilter();
     }
 }
Beispiel #18
0
 public void TestFinished(ITestResultAdaptor result)
 {
     if (!result.HasChildren && result.ResultState != "Success")
     {
         string resultStr = string.Format("Test {0} {1}", result.Test.Name, result.ResultState);
         testResultDes.Append(resultStr);
     }
 }
 public void TestFinished(ITestResultAdaptor result)
 {
     if (!result.HasChildren /* && result.ResultState != "Passed"*/)
     {
         //Debug.Log(string.Format("Test {0} {1}", result.Test.Name, result.ResultState));
         //Debug.Log(result.m_Node.OuterXml);
     }
 }
Beispiel #20
0
        public void RunFinished(ITestResultAdaptor result)
        {
            CallbackData.instance.isRider = false;

            CallbackData.instance.events.Add(
                new TestEvent(EventType.RunFinished, "", "", "", 0, ParseTestStatus(result.TestStatus), ""));
            CallbackData.instance.RaiseChangedEvent();
        }
Beispiel #21
0
 public void TestFinished(ITestResultAdaptor result)
 {
     if (!result.HasChildren && result.ResultState.Equals("Failed"))
     {
         log.Append(
             $"[{result.FullName}][{result.Test.Name}] : {result.ResultState}\n{result.Message}\n");
     }
 }
        public void OnRunFinished(ITestResultAdaptor testResults)
        {
            if (!m_OutputPerTest)
            {
                OutputCoverageReport(testResults, false);
            }

            Events.InvokeOnCoverageSessionFinished();
        }
        public void RunFinished(ITestResultAdaptor result)
        {
            string     resultPath = Application.persistentDataPath + "/testResult-" + DateTime.Now.Ticks + ".log";
            FileStream fs         = new FileStream(resultPath, FileMode.Create);
            var        sw         = new StreamWriter(fs);

            sw.Write(parser(result));
            sw.Close();
        }
Beispiel #24
0
 private string Serialize(ITestResultAdaptor testResultAdaptor)
 {
     return(Serialize(
                testResultAdaptor,
                (a, parentIndex) => new TestResultAdaptor(a, parentIndex),
                (a) => a.Children,
                (r) => new TestResultAdaptorContainer {
         TestResultAdaptors = r
     }));
 }
Beispiel #25
0
        public virtual void RunFinished(ITestResultAdaptor testResults)
        {
            if (string.IsNullOrEmpty(m_ResultFilePath))
            {
                m_ResultFilePath = GetDefaultResultFilePath();
            }

            var resultWriter = new ResultsWriter();

            resultWriter.WriteResultToFile(testResults, m_ResultFilePath);
        }
Beispiel #26
0
        public void ReportTestFinished(ITestResultAdaptor result)
        {
            if (result.Test.IsSuite)
            {
                return;
            }

            var msg = TestRunnerApiMapper.TestResultToTestFinishedMessage(result);

            Logger.Log(msg);
        }
Beispiel #27
0
        public void TestFinished(ITestResultAdaptor result)
        {
            if (result.Test.Method == null)
            {
                return;
            }

            CallbackData.instance.events.Add(
                new TestEvent(EventType.TestFinished, GetUniqueName(result.Test), result.Test.Method.TypeInfo.Assembly.GetName().Name, ExtractOutput(result), result.Duration, ParseTestStatus(result.TestStatus), result.Test.ParentFullName));
            CallbackData.instance.RaiseChangedEvent();
        }
        public void TestFinished(ITestResultAdaptor test)
        {
            if (TestRunnerWindow.s_Instance == null)
            {
                return;
            }

            var result = new TestRunnerResult(test);

            TestRunnerWindow.s_Instance.m_SelectedTestTypes.UpdateResult(result);
        }
Beispiel #29
0
        public void TestFinished(ITestResultAdaptor result)
        {
            if (result.Test.Method == null)
            {
                return;
            }

            CallbackData.instance.events.Add(
                new TestEvent(EventType.TestFinished, GenerateId(result.Test), result.Test.Method.TypeInfo.Assembly.GetName().Name, ExtractOutput(result), (result.EndTime - result.StartTime).Milliseconds, ParseTestStatus(result.TestStatus), GenerateId(result.Test.Parent)));
            CallbackData.instance.RaiseChangedEvent();
        }
 public TestFinishedMessage TestResultToTestFinishedMessage(ITestResultAdaptor result)
 {
     return(new TestFinishedMessage
     {
         name = result.Test.FullName,
         duration = Convert.ToUInt64(result.Duration * 1000),
         durationMicroseconds = Convert.ToUInt64(result.Duration * 1000000),
         message = result.Message,
         state = GetTestStateFromResult(result)
     });
 }