MsTest:如何设置相对于$(ProjectDir)或$(OutDir)的部署项

时间:2011-08-29 13:08:40

标签: unit-testing mstest deploymentitem

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

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


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

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

并且trx文件显示以下行:

  

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

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

2 个答案:

答案 0 :(得分:3)

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

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

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

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

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

    [DeploymentItem ("bin")]
    

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

  3. 可以使用构建事件和DeploymentItem

    中的其他过滤器来细化(如果需要)此机制

答案 1 :(得分:1)

让测试设置将文件复制到Environment.CurrentDirectory