10

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

4

4 回答 4

10

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

于 2010-01-25T17:30:45.600 回答
1

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

于 2010-03-02T18:20:34.577 回答
1

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

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

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

于 2011-07-08T18:48:16.660 回答
1

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

于 2013-06-12T19:42:37.733 回答