如何在VS单元测试中包含样本数据文件?

Fir*_*oso 17 unit-testing visual-studio-2010

我有单元测试我想针对示例XML文件运行,我应该如何将这些文件暴露给单元测试?我尝试过使用内容构建操作,但我无法访问应用程序上下文,因此GetContentStream已经完成.

我知道我可以将DataContext用于SQL数据库.但我觉得这是错误的做法.

bry*_*ook 21

如果您希望在测试中部署XML文件,可以选择以下几种方法:

嵌入式内容

您可以将Xml文件作为内容嵌入到程序集中.

  1. 将文件添加到测试项目中.在此示例的上下文中,该文件位于项目的根目录中.
  2. 将文件的属性更改为嵌入式资源.
  3. 在测试期间,您可以使用get manifest资源以流形式访问该文件.

例:

[TestMethod]
public void GetTheFileFromTheAssembly()
{
    Stream fileStream = Assembly.GetExecutingAssembly()
                          .GetManifestResourceStream("MyNamespace.File.xml");

    var xmlDoc = new XmlDocument();
    xmlDoc.Load(fileStream);

    Assert.IsNotNull( xmlDoc.InnerXml );
}
Run Code Online (Sandbox Code Playgroud)

DeploymentItemAttribute

您可以使用[DeploymentItemAttribute]注释测试方法或类.文件路径相对于soltuion.

[DeploymentItem("file.xml")] // file is at the root of the solution
[TestMethod]
public void GetTheFileDeployedWithTheTest()
{
    var xmlDoc = new XmlDocument();
    xmlDoc.Load("file.xml");

    Assert.IsNotNull(xmlDoc.InnerXml);
}
Run Code Online (Sandbox Code Playgroud)

测试设置

您可以使用"测试设置"文件中的"部署"配置部署单个文件或整个目录.(测试 - >编辑设置 - > Filename.testsettings)

在此输入图像描述