public void GenerateReport()
        {
            report = new ReportElements.NUnitExecutionReport();
            report.ProjectName = specFlowProject.ProjectName;
            report.GeneratedAt = DateTime.Now.ToString("g", CultureInfo.InvariantCulture);

            XmlDocument xmlTestResult = LoadXmlTestResult();
            report.NUnitXmlTestResult = xmlTestResult.DocumentElement;

            if (File.Exists(labeledTestOutputPath))
            {
                using(var reader = new StreamReader(labeledTestOutputPath))
                {
                    string currentTest = "unknown";
                    List<string> testLines = new List<string>();

                    string line;
                    while ((line = reader.ReadLine()) != null)
                    {
                        if (line.StartsWith("***"))
                        {
                            CloseCurrentTest(testLines, currentTest);
                            currentTest = line.Trim('*', ' ');
                        }
                        else
                        {
                            testLines.Add(line);
                        }
                    }
                    CloseCurrentTest(testLines, currentTest);
                }
            }
        }
示例#2
0
        protected override void ExtendReport(ReportElements.NUnitExecutionReport report)
        {
            if (File.Exists(reportParameters.LabelledTestOutput))
            {
                using (var reader = new StreamReader(reportParameters.LabelledTestOutput))
                {
                    string        currentTest = "unknown";
                    List <string> testLines   = new List <string>();

                    string line;
                    while ((line = reader.ReadLine()) != null)
                    {
                        if (line.StartsWith("***"))//nunit2 separator
                        {
                            CloseCurrentTest(testLines, currentTest, report);
                            currentTest = line.Trim('*', ' ');
                        }
                        else if (line.StartsWith("=>"))//nunit3 separator
                        {
                            CloseCurrentTest(testLines, currentTest, report);
                            currentTest = line.Replace("=>", "").Trim();
                        }
                        else
                        {
                            testLines.Add(line);
                        }
                    }
                    CloseCurrentTest(testLines, currentTest, report);
                }
            }
        }
示例#3
0
 private void CloseCurrentTest(List <string> testLines, string currentTest, ReportElements.NUnitExecutionReport report)
 {
     if (testLines.Count > 0)
     {
         report.ScenarioOutputs.Add(new ScenarioOutput
         {
             Name = currentTest,
             Text = string.Join(Environment.NewLine, testLines.ToArray())
         });
         testLines.Clear();
     }
 }
        protected virtual ReportElements.NUnitExecutionReport GenerateReport(SpecFlowProject specFlowProject)
        {
            var report = new ReportElements.NUnitExecutionReport();
            report.ProjectName = specFlowProject.ProjectSettings.ProjectName;
            report.GeneratedAt = DateTime.Now.ToString("g", CultureInfo.InvariantCulture);

            XmlDocument xmlTestResult = LoadXmlTestResult();
            report.NUnitXmlTestResult = xmlTestResult.DocumentElement;

            ExtendReport(report);

            return report;
        }
示例#5
0
        protected virtual ReportElements.NUnitExecutionReport GenerateReport(SpecFlowProject specFlowProject)
        {
            var report = new ReportElements.NUnitExecutionReport();

            report.ProjectName = specFlowProject.ProjectSettings.ProjectName;
            report.GeneratedAt = DateTime.Now.ToString("g", CultureInfo.InvariantCulture);

            XmlDocument xmlTestResult = LoadXmlTestResult();

            report.NUnitXmlTestResult = xmlTestResult.DocumentElement;

            ExtendReport(report);

            return(report);
        }
        protected override void ExtendReport(NUnitExecutionReport.ReportElements.NUnitExecutionReport report)
        {
            XmlDocument reportDoc = new XmlDocument();
            reportDoc.Load(reportParameters.XmlTestResult);

            XmlNameTable nameTable = new NameTable();
            XmlNamespaceManager namespaceManager = new XmlNamespaceManager(nameTable);
            namespaceManager.AddNamespace("mstest", "http://microsoft.com/schemas/VisualStudio/TeamTest/2006");
            var testResultNodes = reportDoc.SelectNodes("//mstest:UnitTestResult", namespaceManager);
            if (testResultNodes == null)
                return;

            foreach (XmlElement testResultNode in testResultNodes)
            {
                var testIdAttr = testResultNode.Attributes["testId"];
                if (testIdAttr == null)
                    continue;

                var testMethodElement = reportDoc.SelectSingleNode(
                    string.Format(
                        "//mstest:UnitTest[@id = '{0}']/mstest:TestMethod", testIdAttr.Value), namespaceManager)
                                        as XmlElement;

                if (testMethodElement == null)
                    continue;

                var classNameAttr = testMethodElement.Attributes["className"];
                if (classNameAttr == null)
                    continue;
                string testClassName = classNameAttr.Value.Split(new[] {','}, 2)[0].Trim();

                var nameAttr = testMethodElement.Attributes["name"];
                if (nameAttr == null)
                    continue;

                var stdOut = testResultNode.SelectSingleNode("mstest:Output/mstest:StdOut", namespaceManager);
                if (stdOut == null)
                    continue;

                report.ScenarioOutputs.Add(
                    new ScenarioOutput()
                        {
                            Name = testClassName + "." + nameAttr.Value,
                            Text = stdOut.InnerText
                        }
                    );
            }
        }
示例#7
0
        private void TransformReport(ReportElements.NUnitExecutionReport report, SpecFlowProject specFlowProject)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(ReportElements.NUnitExecutionReport),
                                                         ReportElements.NUnitExecutionReport.XmlNamespace);

            if (XsltHelper.IsXmlOutput(ReportParameters.OutputFile))
            {
                XsltHelper.TransformXml(serializer, report, ReportParameters.OutputFile);
            }
            else
            {
                XsltHelper.TransformHtml(serializer, report, ReportType,
                                         ReportParameters.OutputFile, specFlowProject.Configuration.SpecFlowConfiguration,
                                         ReportParameters.XsltFile);
            }
        }
示例#8
0
 protected virtual void ExtendReport(ReportElements.NUnitExecutionReport report)
 {
 }