C# c代码文件中的内联原始XML

C# c代码文件中的内联原始XML,c#,xml,unit-testing,code-editor,C#,Xml,Unit Testing,Code Editor,我正在创建一个对象序列化单元测试,并希望将对象的XML内联到c代码单元测试文件中。 我知道最简单的内联方法是使用@前缀作为字符串: var xml = @"<Something> <AnotherSomething/> <AnotherSomething/> </Something>"; 因为它将需要单元测试从磁盘加载文件,这将使单元测试慢得多,我可能有

我正在创建一个对象序列化单元测试,并希望将对象的XML内联到c代码单元测试文件中。 我知道最简单的内联方法是使用@前缀作为字符串:

var xml = @"<Something> 
                 <AnotherSomething/>
                 <AnotherSomething/>
            </Something>";
因为它将需要单元测试从磁盘加载文件,这将使单元测试慢得多,我可能有很多这样的测试


有没有其他方法可以不经修改就将XML放入代码中?

没有,编译器/解析器不允许这样做


您可以将所有xml以某种有效的结构放在一个文件中,让一个实用程序类加载整个内容并在测试之间缓存它。

不,编译器/解析器不允许这样做


您可以将所有xml以某种有效的结构放在一个文件中,让一个实用程序类加载整个内容,并在测试之间缓存它。

正如@leon的评论所建议的那样,使用资源文件,但我更进一步

添加文件夹资源 根据需要添加Resources.resx文件重命名 添加带有测试数据TestData.xml的xml文件 使其成为嵌入式资源 将xml文件从解决方案资源管理器拖到Resource.resx 确保TestData.xml资源类型是文本而不是二进制 编写 现在将您的测试数据称为

string data = Resources.TestData;

正如@leon的评论建议使用资源文件,但我更进一步

添加文件夹资源 根据需要添加Resources.resx文件重命名 添加带有测试数据TestData.xml的xml文件 使其成为嵌入式资源 将xml文件从解决方案资源管理器拖到Resource.resx 确保TestData.xml资源类型是文本而不是二进制 编写 现在将您的测试数据称为

string data = Resources.TestData;

您可以使用linq to xml对象创建xml表示,而不是xml字符串。第二个示例如下所示:

var xml = 
    new XElement("Something",
        new XAttribute("Att", "s"),
        new XAttribute("Att2", "gg"),
        new XElement("AnotherSomething"),
        new XElement("AnotherSomething"));

使用此选项的更多原因是,确保xml有效性、自动转义特殊字符、转换为字符串时提供更多格式选项,以及-更易于操作。

您可以使用linq to xml对象创建xml表示,而不是xml字符串。第二个示例如下所示:

var xml = 
    new XElement("Something",
        new XAttribute("Att", "s"),
        new XAttribute("Att2", "gg"),
        new XElement("AnotherSomething"),
        new XElement("AnotherSomething"));

使用此选项的更多原因是确保xml有效性、自动转义特殊字符、转换为字符串时提供更多格式选项,以及-更易于操作。

您可以尝试将资源文件放入其中,然后从测试程序集中加载该文件。它仍在流式传输,但从程序集内部,而不是从磁盘。确保资源是嵌入的,而不仅仅是指向服务器上文件的链接disk@leon这是一个好主意,如果可以的话,把它作为一个答案和一个例子一起发布,或者你可以添加这个链接——我会把它标记为正确的答案。你可以尝试将它放入一个资源文件中,然后从测试程序集中加载它。它仍在流式传输,但从程序集内部,而不是从磁盘。确保资源是嵌入的,而不仅仅是指向服务器上文件的链接disk@leon这是一个好主意,如果可以的话,将其作为一个带有示例的答案发布,或者您可以添加此链接-我会将其标记为正确答案如果他有许多单元测试,对于不同的序列化场景,许多xml文件,远离使用它们的代码。我可能有很多这样的单元测试。如果你想的话,它会变得一团糟。另一方面,如果你很小心,很用心,那么你就会得到有组织的测试和测试数据。当您查看测试数据时,它将在IDE中以其本机形式和语法颜色呈现。如果他有许多单元测试,对于不同的序列化场景,许多xml文件,而不是使用它们的代码,这可能会变得混乱。我可能有很多这样的单元测试。如果你想的话,它会变得一团糟。另一方面,如果你很小心,很用心,那么你就会得到有组织的测试和测试数据。当您查看测试数据时,它将在IDE中以其本机形式和语法颜色呈现