19

我正在使用MS unit testing framework测试我的 C# 库。我必须打开一个我正在使用DeploymentItem attribute. 但它没有将文件部署到测试部署目录。

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

现在在我的单元测试类中,我添加了 DeploymentItem 属性。但是文件没有被复制。

这是我的代码。

[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
    }
}

我做错了什么?

4

3 回答 3

21

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

  1. 将部署文件的“复制到输出文件夹”属性设置为“始终复制”(请参阅​​ DeploymentItem 属性问题
  2. 检查 Local.testsettings 文件中的“启用部署”设置(请参阅DeploymentItem 属性问题

希望这可以帮助。

于 2013-05-28T08:25:51.410 回答
7

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

于 2016-01-09T18:14:03.577 回答
2

我有一组测试,其中副本适用于某些测试,但不是最新的,即使 DeploymentItem 属性的设置方式完全相同。在用尽其他一切之后,我对解决方案做了一个“干净的解决方案”并重新运行,它开始正确复制。YMMV

于 2018-11-15T19:28:39.647 回答