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

时间:2011-03-21 21:30:53

标签: visual-studio-2010 unit-testing

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

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

1 个答案:

答案 0 :(得分:20)

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

嵌入式内容

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

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

    示例:

    [TestMethod]
    public void GetTheFileFromTheAssembly()
    {
        Stream fileStream = Assembly.GetExecutingAssembly()
                              .GetManifestResourceStream("MyNamespace.File.xml");
    
        var xmlDoc = new XmlDocument();
        xmlDoc.Load(fileStream);
    
        Assert.IsNotNull( xmlDoc.InnerXml );
    }
    

    <强> 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);
    }
    

    测试设置

    您可以使用“测试设置”文件中的“部署”配置部署单个文件或整个目录。 (测试 - &gt;编辑设置 - &gt; Filename.testsettings)

    enter image description here