当我在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
将其复制到那里?
答案 0 :(得分:10)
感谢Marc Gravell's answer我的相关问题,我尝试更新我的MSTest .testrunconfig文件,以便我的XSL文件包含在“部署”部分中。这让我的单元测试通过,但我仍然感到不安,我必须这样做 - 不应该DeploymentItem
和在我的项目中标记文件属性的组合复制到输出目录是否足够?< / p>
答案 1 :(得分:1)
据称VS2008部署项目无声地失败,除非输出目录是文字字符串。嗯^ _ ^
答案 2 :(得分:1)
即使我 在部署项目中使用文字字符串,我也遇到了同样的问题。我甚至尝试将文件添加到测试设置的“部署”部分,这部分也不起作用。事实证明,这个问题与测试平台有关。
我有一台64位机器,我正在测试的项目和单元测试项目的平台目标都是“任何CPU”。
我发现只有在选择“在64位计算机上以64位进程运行测试”时才会复制部署项目。
答案 3 :(得分:1)
我们遇到类似的情况,其中DeploymentItem属性未按预期工作。我们也使用64位机器,项目平台设置为“任何CPU”。作为一种解决方法,我们将单元测试所需的文件作为单元测试项目的链接包含在内,并将其“复制到输出目录”设置为“始终复制”。