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); }