使用样式表显示来自多个XML文件的xUnit测试数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用样式表显示来自多个XML文件的xUnit测试数据相关的知识,希望对你有一定的参考价值。

我使用xUnit编写了一个测试,它使用MemberData属性通过这个类发现包含测试数据的XML文件:

internal class XmlDataRetriever
{
    private const String XmlPath = @"..\..\TestCases\";

    public static IEnumerable<TestCase[]> Data
    {
        get
        {
            return
                CreateTestCases(
                    Directory.GetFiles(XmlPath, "*.xml", SearchOption.TopDirectoryOnly)
                    .ToReadOnlyCollection());
        }
    }

    private static List<TestCase[]> CreateTestCases(ReadOnlyCollection<String> filePaths)
    {
        return
            filePaths
                .Select(testCaseName =>
                    new TestCase[] { new XmlParser().GetTestCase(testCaseName) })
                .ToList();
    }
}

这里的代码并不那么重要,但它可以让我们了解如何发现测试用例。

我想要实现的是在一个文档中查看这些XML测试用例列表的一些方法,理想情况是从Visual Studio中查看,但我不确定实现此目的的最佳方法。

我已经研究过使用XSLT,但这只能让我走到一半,因为我仍然需要一些方法来发现测试用例并将它们全部显示出来。

答案

以下是组合xml文件的示例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        private const String XmlPath = @"..\..\TestCases\";
        static void Main(string[] args)
        {
            string xml = "<Root>";
            foreach (string file in Directory.GetFiles(XmlPath))
            {
                StreamReader reader = new StreamReader(file, Encoding.UTF8);
                //skip identification line
                reader.ReadLine();
                xml += reader.ReadToEnd();
            }

            xml += "</Root>";
        }
    }
}

如果您想使用xml linq,请尝试以下操作:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        private const String XmlPath = @"..\..\TestCases\";
        static void Main(string[] args)
        {
            XElement xRoot = new XElement("Root");
            foreach (string file in Directory.GetFiles(XmlPath))
            {
                XDocument doc = XDocument.Load(file);
                XElement root = doc.Root;
                xRoot.Add(root);
            }

        }
    }

以上是关于使用样式表显示来自多个XML文件的xUnit测试数据的主要内容,如果未能解决你的问题,请参考以下文章

使用 CSS 显示 XML

如何使用 xsl 拆分 html 文件?

在 STA Thread WPF 下运行多个 xunit 测试时出现问题

xUnit测试的顺序执行

如何在 Gitlab CI 中捕获结构化的 xUnit 测试输出?

xUnit 和 White 测试失败清理