예제 #1
0
    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);
        });
    }
예제 #2
0
    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));
        });
    }
예제 #3
0
    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);
            }
        });
    }
예제 #4
0
    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));
        });
    }
예제 #5
0
    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);
        });
    }
예제 #6
0
    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));
        });
    }
예제 #7
0
    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));
        });
    }
예제 #8
0
    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);
    }
예제 #9
0
    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);
    }