DeploymentItem没有部署文件

本文关键字:文件 部署 DeploymentItem | 更新日期: 2023-09-27 18:15:44

我使用MS unit testing framework来测试我的c#库。我必须打开使用DeploymentItem attribute部署的文件。但是它没有将文件部署到Test部署目录。

在我的单元测试项目中,我创建了一个文件夹TestFile在这个文件夹中有多个文件,比如a.txt b.txt

现在,在我的Unit-test类中,我添加了deploymenttem属性。但是文件没有被复制。

这是我的代码。

[TestClass]
[DeploymentItem("TestFile")]
public class CustomLibraryTest
{
    public TestContext TestContext { get; set; }
    [TestMethod]
    [DeploymentItem(@"TestFiles'a.txt")]  // THis should deploy a.txt to test deployment directory
    {
        var path = TestContext.TestDeploymentDir + "a.txt";
        // Now when I debug this unit-test, and open path in explorer,
        // a.txt is not present in "TestResults'Deploy_fhafeez 2013-05-28 13_02_37'Out" folder
    }
}

我做错了什么?

DeploymentItem没有部署文件

我在这个线程中找到了两个可能的解决方案:

  1. 设置你的部署文件的"Copy To Output Folder"属性为"Copy Always"(参见DeploymentItem属性的问题)
  2. 检查本地的"启用部署"设置。测试设置文件(参见deploymenttem属性的问题)

为了将来的参考,从我注意到使用VS 2015 -你在部署项属性中指定的路径必须相对于构建输出(调试文件夹)。如果你的文件夹结构是"UnitTesting'TestData'Test.xml",那么DeploymentItem必须是DeploymentItem("..'..'TestData'Test.xml")在这种情况下,TestData文件夹不需要包含在UnitTesting项目中。

我有一组测试,其中副本可以用于某些测试,但不能用于最新的测试,即使deploymenttem属性以完全相同的方式设置。在用尽了所有方法后,我对解决方案进行了"清洁解决方案"并重新运行,它开始正确地复制。YMMV