5

我想在我的测试中添加一个部署项。据我到目前为止所了解的,路径是相对于解决方案的。我希望路径与项目相关。否则,该项目不能在多个解决方案中使用。如何将部署项配置为相对于项目因变量?

我希望得到类似的东西:[DeploymentItem(@"$(ProjectDir)..\..\bin\$(Configuration)")]但我没有找到任何文档,而且它似乎不起作用。


我只是做了一个小测试。只是简单的向导代码和一个部署项:

[TestMethod]
[DeploymentItem("stdafx.cpp")]
void TestMethod1()
{
    Assert::Fail();
};

并且 trx 文件显示以下行:

警告:测试运行部署问题:无法获取测试“TestProject1.UnitTest1.TestMethod1”指定的部署项“stdafx.cpp”的文件:System.IO.FileNotFoundException:找不到文件“d:\Development\Projects\部署项目测试\stdafx.cpp'。System.IO.FileNotFoundException:找不到文件 'd:\Development\Projects\deploymentItemTest\stdafx.cpp'。文件名:'d:\Development\Projects\deploymentItemTest\stdafx.cpp'

这意味着“stdafx.cpp”是相对于解决方案目录(在 ...\depoymentItemTest 中)而不是项目目录(在 ...\depolymentItemTest\TestProject1 中)进行搜索的

4

2 回答 2

3

我知道这是一个老问题,但我的回答可能对其他人有所帮助。我能够通过两个简单的步骤解决这个问题:

  1. 在测试项目上创建以下构建事件:

    xcopy /I /S /Y  "$(TargetDir)*.*" "$(SolutionDir)\bin"
    

    这会将项目文件夹的所有内容(包括子目录)复制到相对于解决方案的文件夹“bin”。

  2. 将以下 DeploymentItem 添加到测试类:

    [DeploymentItem ("bin")]
    

    这会将所有 bin 内容复制到测试文件夹

可以在构建事件和 DeploymentItem 中使用额外的过滤器来细化(如果需要)此机制

于 2012-08-24T12:15:29.317 回答
1

Let the test setup copy the file to Environment.CurrentDirectory.

于 2011-09-15T09:02:18.093 回答