【问题标题】:MSTest VS2010 - DeploymentItem copying files to different locations on different machinesMSTest VS2010 - DeploymentItem 将文件复制到不同机器上的不同位置
【发布时间】:2010-06-16 16:10:21
【问题描述】:

我找到了 DeploymentItem

[TestClass(), DeploymentItem(@"TestData\")]

在不同机器上构建和运行测试时,不会将我的测试数据文件复制到同一位置。

测试数据文件复制到我机器上测试项目中的“bin\debug”目录,但在我朋友的机器上它们被复制到“TestResults\name_machine YY-MM-DD HH_MM_SS\Out"。

我机器上的bin\debug目录可以用代码获取:

string appDirectory = 
Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);

同样的代码将在我朋友的 PC 上返回 TestResults\*name_machine YY-MM-DD HH_MM_SS*\Out

但这并不是真正的问题。问题是我制作的测试数据文件有一个文件夹结构,这个文件夹结构只有在我的机器上复制到 bin\debug 时才维护,而在我朋友的机器上,只有文件被添加到TestResults\*name_machine YY-MM-DD HH_MM_SS*\Out 目录。这意味着测试将在我的机器上通过而在他的机器上失败!

有没有办法确保 DeploymentItem 总是复制到 bin\debug 文件夹?或者有一种方法可以确保在 DeploymentItem 将文件复制到 TestResults\*name_machine YY-MM-DD HH_MM_SS*\Out 文件夹时保留文件夹结构?

【问题讨论】:

    标签: c# unit-testing testing mstest deploymentitem


    【解决方案1】:

    玩了一段时间后,看起来最好的处理方法是确保为每个子目录添加一个新的 DeploymentItem,并确保指定“outputDirectory”,如下所示:

    [TestClass(), DeploymentItem("TestData\\", "TestData"),
    DeploymentItem(@"TestData\\SubDir\\", "TestData\\SubDir")]
    

    这允许测试在您的机器上运行 - 希望这对某人有所帮助!

    【讨论】:

    • 这完全解决了我的相对路径问题。对于存储在子文件夹中的文件和 app.config 文件中定义的相对路径,我遇到了同样的问题。谢谢
    • DeploymentItem 属性仅针对方法。你写的东西怎么样?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-10
    • 1970-01-01
    相关资源
    最近更新 更多