public void WriteTestResult(Guid executionId, VsTestResult testResult) { if (!inResults) { throw new InvalidOperationException("WriteStartTestResults() not called"); } xml.WriteStartElement("UnitTestResult", XmlNamespace); xml.WriteAttributeString("executionId", executionId.ToString()); xml.WriteAttributeString("testId", testResult.TestCase.Id.ToString()); xml.WriteAttributeString("testName", testResult.DisplayName); xml.WriteAttributeString("computerName", testResult.ComputerName); xml.WriteAttributeString("duration", testResult.Duration.ToString("c", CultureInfo.InvariantCulture)); xml.WriteAttributeString("startTime", testResult.StartTime.ToString("O", CultureInfo.InvariantCulture)); xml.WriteAttributeString("endTime", testResult.EndTime.ToString("O", CultureInfo.InvariantCulture)); xml.WriteAttributeString("testType", TestType); xml.WriteAttributeString("outcome", VsTestOutcomeHelper.GetOutcomeString(testResult.Outcome)); xml.WriteAttributeString("testListId", TestListNotInAListId); xml.WriteAttributeString("relativeResultsDirectory", executionId.ToString()); bool hasErrorMessage = !string.IsNullOrEmpty(testResult.ErrorMessage); bool hasStackTrace = !string.IsNullOrEmpty(testResult.ErrorStackTrace); bool hasStdOut = false; if (hasErrorMessage || hasStackTrace || hasStdOut) { xml.WriteStartElement("Output", XmlNamespace); if (hasErrorMessage || hasStackTrace) { xml.WriteStartElement("ErrorInfo", XmlNamespace); if (hasErrorMessage) { xml.WriteElementString("Message", XmlNamespace, testResult.ErrorMessage); } if (hasStackTrace) { xml.WriteElementString("StackTrace", XmlNamespace, testResult.ErrorStackTrace); } xml.WriteEndElement(); // ErrorInfo } if (hasStdOut) { // TODO: Figure out how to include StdOut messages //xml.WriteElementString("StdOut", XmlNamespace, ((Microsoft.VisualStudio.TestPlatform.ObjectModel.AttachmentSet)testResult.Attachments[0]).; } xml.WriteEndElement(); // Output } xml.WriteEndElement(); // UnitTestResult }
public void WriteResultSummary(VsTestOutcome outcome, Xunit.ExecutionSummary executionSummary) { if (!inDocument) { throw new InvalidOperationException("WriteStartDocument() not called"); } xml.WriteStartElement("ResultSummary", XmlNamespace); xml.WriteAttributeString("outcome", VsTestOutcomeHelper.GetOutcomeString(outcome)); xml.WriteStartElement("Counters", XmlNamespace); xml.WriteAttributeString("total", executionSummary.Total.ToString(CultureInfo.InvariantCulture)); xml.WriteAttributeString("executed", (executionSummary.Total - executionSummary.Skipped).ToString(CultureInfo.InvariantCulture)); xml.WriteAttributeString("passed", (executionSummary.Total - (executionSummary.Failed + executionSummary.Skipped)).ToString(CultureInfo.InvariantCulture)); xml.WriteAttributeString("inconclusive", executionSummary.Skipped.ToString(CultureInfo.InvariantCulture)); xml.WriteAttributeString("failed", executionSummary.Failed.ToString(CultureInfo.InvariantCulture)); xml.WriteAttributeString("error", executionSummary.Errors.ToString(CultureInfo.InvariantCulture)); xml.WriteEndElement(); // Counters xml.WriteEndElement(); // ResultSummary }