C#DeploymentItem无法复制MSTest单元测试的文件

时间:2010-01-25 17:16:44

标签: c# visual-studio mstest deploymentitem

当我在MSTest单元测试中使用DeploymentItem属性时,我无法将XSL文件复制到与测试程序集相同的目录中。我按照this question选择的答案,我需要复制的文件将其“复制到输出目录”设置为“始终复制”。当我检查我的ProjectDir \ bin目录(目标目录)时,我想复制的文件确实存在,与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 \ specificTestRun \ Out目录时,我看到了DLL和PDB,但我的XSL文件不存在。我想知道的是为什么 XSL文件不能与DLL和PDB一起复制,即使我明确告诉Visual Studio通过DeploymentItem将其复制到那里?

4 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

即使我 在部署项目中使用文字字符串,我也遇到了同样的问题。我甚至尝试将文件添加到测试设置的“部署”部分,这部分也不起作用。事实证明,这个问题与测试平台有关。

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

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

答案 3 :(得分:1)

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