public void JUnit_testcase_with_stdout_and_stderr___system_out_and_system_err_set() { XElement junit = XElement.Load("./data/junit/with-system-out.xml"); var parser = new JUnitTestResultXmlParser(junit); parser.Parse(); JUnitTest testData = parser.Result; var converter = new JUnit2TrxTestConverter(testData); converter.Convert(); TrxTest trxTest = converter.Result; var sut = new TrxTestResultXmlBuilder(trxTest); sut.Build(); XElement xResults = sut.Result.Element(TrxBase.s_XN + "Results"); XElement xUnitTestResult = xResults.Elements(TrxBase.s_XN + "UnitTestResult").Single(); XElement xOutput = xUnitTestResult.Element(TrxBase.s_XN + "Output"); XElement xStdOut = xOutput.Element(TrxBase.s_XN + "StdOut"); XElement xStdErr = xOutput.Element(TrxBase.s_XN + "StdErr"); Assert.Multiple(() => { Assert.IsNotNull(xStdOut); Assert.IsNotNull(xStdErr); }); Assert.Multiple(() => { Assert.AreEqual("message written to system-out", xStdOut.Value); Assert.AreEqual("message written to system-err", xStdErr.Value); }); }
public void File_given___correct_counts(string junitFile, int expectedTestCount, int expectedFailureCount, int?expectedErrorCount) { XElement junit = XElement.Load(junitFile); var parser = new JUnitTestResultXmlParser(junit); parser.Parse(); JUnitTest testData = parser.Result; var converter = new JUnit2TrxTestConverter(testData); converter.Convert(); TrxTest trxTest = converter.Result; var sut = new TrxTestResultXmlBuilder(trxTest); sut.Build(); XElement xResultSummary = sut.Result.Element(TrxBase.s_XN + "ResultSummary"); XElement xCounters = xResultSummary.Element(TrxBase.s_XN + "Counters"); Assert.Multiple(() => { Assert.AreEqual(expectedTestCount, xCounters.ReadInt("total"), nameof(expectedTestCount)); Assert.AreEqual(expectedFailureCount, xCounters.ReadInt("failed"), nameof(expectedFailureCount)); Assert.AreEqual(expectedErrorCount, xCounters.ReadInt("error"), nameof(expectedErrorCount)); }); }
public void JUnit_file_given___testTypeId_set_to_known_value_for_Visual_Studio(string junitFile) { XElement junit = XElement.Load(junitFile); var parser = new JUnitTestResultXmlParser(junit); parser.Parse(); JUnitTest testData = parser.Result; var converter = new JUnit2TrxTestConverter(testData); converter.Convert(); TrxTest trxTest = converter.Result; var sut = new TrxTestResultXmlBuilder(trxTest); sut.Build(); var xUnitTestResults = sut.Result.Descendants(TrxBase.s_XN + "UnitTestResult"); List <Guid> actualTestTypeIds = xUnitTestResults.Select(x => x.ReadGuid("testType")).ToList(); // I have no idea why this guid, but testing showed VS likes this one :-) Guid expectedTestTypeId = Guid.Parse("13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b"); Assert.Multiple(() => { foreach (Guid actual in actualTestTypeIds) { Assert.AreEqual(expectedTestTypeId, actual); } }); }
public void File_given___correct_counts(string trxFile, int expectedTestCount, int expectedFailureCount) { XElement trx = XElement.Load(trxFile); var parser = new TrxTestResultXmlParser(trx); parser.Parse(); TrxTest testData = parser.Result; var converter = new Trx2JunitTestConverter(testData); converter.Convert(); JUnitTest junitTest = converter.Result; var sut = new JUnitTestResultXmlBuilder(junitTest); sut.Build(); XElement testsuite = sut.Result.Elements("testsuite").First(); Assert.Multiple(() => { Assert.AreEqual(expectedTestCount, int.Parse(testsuite.Attribute("tests").Value), nameof(expectedTestCount)); Assert.AreEqual(expectedFailureCount, int.Parse(testsuite.Attribute("failures").Value), nameof(expectedFailureCount)); }); }
public void Testcase_status_attribute_set() { XElement trx = XElement.Load("./data/trx/nunit.trx"); var parser = new TrxTestResultXmlParser(trx); parser.Parse(); TrxTest testData = parser.Result; var converter = new Trx2JunitTestConverter(testData); converter.Convert(); JUnitTest junitTest = converter.Result; var sut = new JUnitTestResultXmlBuilder(junitTest); sut.Build(); XElement[] testCases = sut.Result.Descendants("testcase").ToArray(); Assert.Multiple(() => { Assert.AreEqual(3, testCases.Length); Assert.AreEqual("1", testCases[0].Attribute("status").Value); Assert.AreEqual("0", testCases[1].Attribute("status").Value); Assert.AreEqual("1", testCases[2].Attribute("status").Value); }); }
public void File_given___correct_ResultSummary_total_failed(string trxFile, int expectedTotalCount, int expectedFailedCount) { XElement trx = XElement.Load(trxFile); var sut = new TrxTestResultXmlParser(trx); sut.Parse(); TrxTest actual = sut.Result; Assert.Multiple(() => { Assert.AreEqual(expectedTotalCount, actual.ResultSummary.Total, nameof(expectedTotalCount)); Assert.AreEqual(expectedFailedCount, actual.ResultSummary.Failed, nameof(expectedFailedCount)); }); }
public void File_given___correct_counts(string trxFile, int expectedUnitTestResultsCount, int expectedTestDefinitionsCount) { XElement trx = XElement.Load(trxFile); var sut = new TrxTestResultXmlParser(trx); sut.Parse(); TrxTest actual = sut.Result; Assert.Multiple(() => { Assert.AreEqual(expectedUnitTestResultsCount, actual.UnitTestResults.Count, nameof(expectedUnitTestResultsCount)); Assert.AreEqual(expectedTestDefinitionsCount, actual.TestDefinitions.Count, nameof(expectedTestDefinitionsCount)); }); }
public void TrxUnitTestResult_with_stdout___system_out_set() { XElement trx = XElement.Load("./data/trx/nunit-with-stdout.trx"); var parser = new TrxTestResultXmlParser(trx); parser.Parse(); TrxTest testData = parser.Result; var converter = new Trx2JunitTestConverter(testData); converter.Convert(); JUnitTest junitTest = converter.Result; var sut = new JUnitTestResultXmlBuilder(junitTest); sut.Build(); XElement testsuite = sut.Result.Elements("testsuite").First(); XElement systemOut = testsuite.Element("system-out"); Assert.IsNotNull(systemOut, nameof(systemOut)); Assert.AreEqual("message written to stdout", systemOut.Value); }
public static TrxTests ParseTrxXml(XmlReader reader) { var rv = new TrxTests(); var tests = new Dictionary <string, TrxTest>(); TrxTest?lastTest = null; while (reader.Read()) { if (reader.NodeType != XmlNodeType.Element) { continue; } switch (reader.Name) { case "Counters": long.TryParse(reader["total"], out rv.Total); long.TryParse(reader["executed"], out rv.Executed); long.TryParse(reader["passed"], out rv.Passed); long.TryParse(reader["failed"], out rv.Failed); long.TryParse(reader["error"], out rv.Error); long.TryParse(reader["timeout"], out rv.Timeout); long.TryParse(reader["aborted"], out rv.Aborted); long.TryParse(reader["inconclusive"], out rv.Inconclusive); long.TryParse(reader["notRunnable"], out rv.NotRunnable); long.TryParse(reader["notExecuted"], out rv.NotExecuted); break; case "UnitTestResult": { var testId = reader["testId"]; var outcome = reader["outcome"]; var test = new TrxTest { Outcome = outcome }; if (TimeSpan.TryParse(reader["duration"], out var duration)) { test.Duration = duration; } tests[testId] = test; rv.Add(test); lastTest = test; break; } case "Message": if (lastTest != null) { reader.Read(); lastTest.Message = reader.Value; } break; case "UnitTest": { var id = reader["id"]; var test = tests[id]; while (reader.Read() && !(reader.NodeType == XmlNodeType.Element && reader.Name == "TestMethod")) { ; } test.ClassName = reader["className"]; test.TestName = reader["name"]; break; } default: break; } } return(rv); }