Beispiel #1
0
        /// <summary/>
        public static TestState FromTestResult(_TestResultMessage testResult)
        {
            var result = new TestState {
                ExecutionTime = testResult.ExecutionTime
            };

            if (testResult is _TestPassed)
            {
                result.Result = TestResult.Passed;
            }
            else if (testResult is _TestSkipped)
            {
                result.Result = TestResult.Skipped;
            }
            else if (testResult is _TestFailed testFailed)
            {
                result.ExceptionMessages      = testFailed.Messages;
                result.ExceptionParentIndices = testFailed.ExceptionParentIndices;
                result.ExceptionStackTraces   = testFailed.StackTraces;
                result.ExceptionTypes         = testFailed.ExceptionTypes;
                result.FailureCause           = testFailed.Cause;
                result.Result = TestResult.Failed;
            }
            else
            {
                throw new ArgumentException($"Unknown type: '{testResult.GetType().FullName}'", nameof(testResult));
            }

            return(result);
        }
        void LogFinish(_TestResultMessage testResult)
        {
            var testMetadata  = metadataCache.TryGetTestMetadata(testResult);
            var formattedName = Escape(testMetadata != null ? testMetadata.TestDisplayName : "<unknown test>");
            var flowId        = testResult.TestCollectionUniqueID;

            if (!string.IsNullOrWhiteSpace(testResult.Output))
            {
                logger.LogImportantMessage($"##teamcity[testStdOut name='{formattedName}' out='{Escape(testResult.Output)}' flowId='{flowId}']");
            }

            logger.LogImportantMessage($"##teamcity[testFinished name='{formattedName}' duration='{(int)(testResult.ExecutionTime * 1000M)}' flowId='{flowId}']");
        }
Beispiel #3
0
    public static ITestResultWithDisplayName?TestResultFactory(
        _TestResultMessage result,
        string testDisplayName)
    {
        if (result is _TestPassed passed)
        {
            return(new TestPassedWithDisplayName(passed, testDisplayName));
        }
        if (result is _TestFailed failed)
        {
            return(new TestFailedWithDisplayName(failed, testDisplayName));
        }
        if (result is _TestSkipped skipped)
        {
            return(new TestSkippedWithDisplayName(skipped, testDisplayName));
        }

        return(null);
    }
Beispiel #4
0
        TestResult ToTdNetTestResult(
            _TestResultMessage testResult,
            TestState testState,
            int totalTests)
        {
            var testClassMetadata  = Guard.NotNull($"Cannot get test class metadata for ID {testResult.TestClassUniqueID}", metadataCache.TryGetClassMetadata(testResult));
            var testClass          = Type.GetType(testClassMetadata.TestClass);
            var testMethodMetadata = Guard.NotNull($"Cannot get test method metadata for ID {testResult.TestMethodUniqueID}", metadataCache.TryGetMethodMetadata(testResult));
            var testMethod         = testClass != null?testClass.GetMethod(testMethodMetadata.TestMethod) : null;

            var testMetadata = Guard.NotNull($"Cannot get test metadata for ID {testResult.TestUniqueID}", metadataCache.TryGetTestMetadata(testResult));

            return(new TestResult
            {
                FixtureType = testClass,
                Method = testMethod,
                Name = testMetadata.TestDisplayName,
                State = testState,
                TimeSpan = new TimeSpan((long)(10000.0M * testResult.ExecutionTime)),
                TotalTests = totalTests,
            });
        }
Beispiel #5
0
        XElement CreateTestResultElement(
            _TestResultMessage testResult,
            string resultText)
        {
            var testMetadata       = Guard.NotNull($"Cannot find test metadata for ID {testResult.TestUniqueID}", metadataCache.TryGetTestMetadata(testResult));
            var testCaseMetadata   = Guard.NotNull($"Cannot find test case metadata for ID {testResult.TestCaseUniqueID}", metadataCache.TryGetTestCaseMetadata(testResult));
            var testMethodMetadata = Guard.NotNull($"Cannot find test method metadata for ID {testResult.TestMethodUniqueID}", metadataCache.TryGetMethodMetadata(testResult));
            var testClassMetadata  = Guard.NotNull($"Cannot find test class metadata for ID {testResult.TestClassUniqueID}", metadataCache.TryGetClassMetadata(testResult));

            var collectionElement = GetTestCollectionElement(testResult.TestCollectionUniqueID);
            var testResultElement =
                new XElement("test",
                             new XAttribute("name", XmlEscape(testMetadata.TestDisplayName)),
                             new XAttribute("type", testClassMetadata.TestClass),
                             new XAttribute("method", testMethodMetadata.TestMethod),
                             new XAttribute("time", testResult.ExecutionTime.ToString(CultureInfo.InvariantCulture)),
                             new XAttribute("result", resultText)
                             );

            var testOutput = testResult.Output;

            if (!string.IsNullOrWhiteSpace(testOutput))
            {
                testResultElement.Add(new XElement("output", new XCData(testOutput)));
            }

            var fileName = testCaseMetadata.SourceFilePath;

            if (fileName != null)
            {
                testResultElement.Add(new XAttribute("source-file", fileName));
            }

            var lineNumber = testCaseMetadata.SourceLineNumber;

            if (lineNumber != null)
            {
                testResultElement.Add(new XAttribute("source-line", lineNumber.GetValueOrDefault()));
            }

            var traits = testCaseMetadata.Traits;

            if (traits != null && traits.Count > 0)
            {
                var traitsElement = new XElement("traits");

                foreach (var keyValuePair in traits)
                {
                    foreach (var val in keyValuePair.Value)
                    {
                        traitsElement.Add(
                            new XElement("trait",
                                         new XAttribute("name", XmlEscape(keyValuePair.Key)),
                                         new XAttribute("value", XmlEscape(val))
                                         )
                            );
                    }
                }

                testResultElement.Add(traitsElement);
            }

            collectionElement.Add(testResultElement);

            return(testResultElement);
        }