【问题标题】:C# DeploymentItem fails to copy file for MSTest unit testC# DeploymentItem 无法复制 MSTest 单元测试的文件
【发布时间】:2010-01-25 17:16:43
【问题描述】:

当我在 MSTest 单元测试中使用 DeploymentItem 属性时,无法将 XSL 文件复制到与测试程序集相同的目录中。我按照this question 选择的答案,我需要复制的文件将其“复制到输出目录”设置为“始终复制”。当我检查我的 ProjectDir\bin 目录(Target 目录)时,我想要复制的文件确实在那里,以及 DLL 和 PDB。

我有几个单元测试,设置如下:

private const string DLL = "Service.dll";
private const string XSL_PATH = "transform.xsl";

[TestInitialize]
public void InitializeTest()
{
    Assert.IsTrue(File.Exists(DLL)); // passes
}

[TestMethod]
[DeploymentItem(DLL)]
[DeploymentItem(XSL_PATH)]
public void XmlToResultsTest()
{
    Assert.IsTrue(File.Exists(XSL_PATH)); // fails
}

XSL 测试失败,因为当我检查 MSTest 的 TestResults\particularTestRun\Out 目录时,我看到了 DLL 和 PDB,但我的 XSL 文件不存在。我想知道的是为什么即使我通过DeploymentItem 明确告诉 Visual Studio 将其复制到那里,XSL 文件也不会与 DLL 和 PDB 一起复制?

【问题讨论】:

    标签: c# visual-studio mstest deploymentitem


    【解决方案1】:

    感谢Marc Gravell's answer 我的一个相关问题,我尝试更新我的 MSTest .testrunco​​nfig 文件,以便我的 XSL 文件包含在“部署”部分中。这让我的单元测试通过了,但我仍然对必须这样做感到不安——DeploymentItem 和在我的项目中标记文件属性以复制到输出目录的组合不应该足够吗?

    【讨论】:

    • 我也遇到了同样的问题,莎拉 - 确实很混乱!
    【解决方案2】:

    据称 VS2008 部署项会静默失败,除非输出目录是文字字符串。嗯^_^

    【讨论】:

    • 你的来源是哪里?如果这是真的,那就太疯狂了。我想要我的字符串常量,该死!
    • 不是我个人复制的东西,但是我遇到了一些部署问题并用谷歌搜索,发现很多博客说他们对 DeploymentItem 有问题,例如:sergeyshishkin.spaces.live.com/blog/… 最后我选择了全局部署文件夹在 .testrunco​​nfig 文件中。
    【解决方案3】:

    即使我部署项中使用了文字字符串,我也遇到了同样的问题。我什至尝试将文件添加到测试设置的“部署”部分,但这也不起作用。原来是测试平台的问题。

    我有一台 64 位机器,我正在测试的项目和单元测试项目的平台目标都是“任何 CPU”。

    我发现只有当我选择“在 64 位机器上以 64 位进程运行测试”时才会复制部署项。

    【讨论】:

      【解决方案4】:

      我们在工作中遇到了类似的情况,即 DeploymentItem 属性没有按预期工作。我们还使用 64 位机器,项目平台设置为“任何 CPU”。作为一种解决方法,我们将单元测试所需的文件作为单元测试项目的链接包含在内,并将其“复制到输出目录”设置为“始终复制”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-01
        • 2010-10-13
        • 1970-01-01
        相关资源
        最近更新 更多