我正在编写一些单元测试,其中我需要一个假的xml文件。我可以创建该文件,并要求它与单元测试一起部署,但经验表明,在我的办公室,这是一个很头疼的问题。所以我决定该文件将由UT创建。
StreamWriter sw = new StreamWriter(testFileName);
sw.Write(contents);
sw.Close();
现在问题是内容字符串。它实际上是一个很长的xml,如下所示:
string contents =
@"<?xml version="1.0" encoding="windows-1251"?>
<blah>
~100 lines here
</blah> ";
我不希望它与其余代码位于同一个文件中。我希望从文件生成编译时字符串。
在C ++中,我会这样做
string contents = "
#include "test.xml"
";
C#中有可能以某种方式存在吗?
答案 0 :(得分:9)
为什么不将它包含在资源中?
答案 1 :(得分:1)
使用资源(resx文件)并添加xml文件。然后,您可以使用MyNs.MyResources.MyXmlFile访问。
答案 2 :(得分:0)
我通常会将这些测试文件直接添加到单元测试C#项目中,并在编译过程中将它们设置为“Content”和“Copy if newer”复制到bin目录。
答案 3 :(得分:0)
如果内容是静态的,为什么不能将它提交给源代码控制?将它添加到您的项目中,然后它将始终完全符合您的预期。
答案 4 :(得分:0)
你可以去资源文件路由,但是,根据资源的数量/数量(以及XML可能很大),你最终可能遇到编译问题(我做过)。
我已经从资源转变为单身人士。使用File.ReadAllText读取文本文件非常简单,它仍然是智能感知友好的。
答案 5 :(得分:0)
您可以使用T4模板执行此操作。你需要的是3件事
您的camelCase
文件
template.tt
如果您不想将模板配置为在构建中重新创建,那么只需打开它并保存即可。