예제 #1
0
        private XElement CreateTestCaseElement(TestResultInfo result)
        {
            var testcaseElement = new XElement("testcase");

            var namespaceClass = result.Namespace + "." + result.Type;

            testcaseElement.SetAttributeValue("classname", namespaceClass);

            if (this.MethodFormatOption == MethodFormat.Full)
            {
                testcaseElement.SetAttributeValue("name", namespaceClass + "." + result.Name);
            }
            else if (this.MethodFormatOption == MethodFormat.Class)
            {
                testcaseElement.SetAttributeValue("name", result.Type + "." + result.Name);
            }
            else
            {
                testcaseElement.SetAttributeValue("name", result.Name);
            }

            // Ensure time value is never zero because gitlab treats 0 like its null.
            // 0.1 micro seconds should be low enough it won't interfere with anyone
            // monitoring test duration.
            testcaseElement.SetAttributeValue(
                "time",
                Math.Max(0.0000001f, result.Duration.TotalSeconds).ToString("0.0000000"));

            if (result.Outcome == TestOutcome.Failed)
            {
                var failureBodySB = new StringBuilder();

                if (this.FailureBodyFormatOption == FailureBodyFormat.Verbose)
                {
                    failureBodySB.AppendLine(result.ErrorMessage);

                    // Stack trace included to mimic the normal test output
                    failureBodySB.AppendLine("Stack Trace:");
                }

                failureBodySB.AppendLine(result.ErrorStackTrace);

                var failureElement = new XElement("failure", failureBodySB.ToString().Trim());

                failureElement.SetAttributeValue("type", "failure"); // TODO are there failure types?
                failureElement.SetAttributeValue("message", result.ErrorMessage);

                testcaseElement.Add(failureElement);
            }
            else if (result.Outcome == TestOutcome.Skipped)
            {
                var skippedElement = new XElement("skipped");

                testcaseElement.Add(skippedElement);
            }

            return(testcaseElement);
        }
        public override bool Equals(object obj)
        {
            if (obj is TestResultInfo)
            {
                TestResultInfo objectToCompare = (TestResultInfo)obj;
                if (string.Compare(this.ErrorMessage, objectToCompare.ErrorMessage) == 0 &&
                    string.Compare(this.ErrorStackTrace, objectToCompare.ErrorStackTrace) == 0)
                {
                    return(true);
                }
            }

            return(false);
        }