DeploymentItemAttribute的相对路径根是什么?

时间:2009-11-30 21:45:48

标签: .net unit-testing mstest deploymentitem

使用MSTestDeploymentItemAttribute的相对路径根是什么。

3 个答案:

答案 0 :(得分:17)

根据MSDN页面...

  

相对路径是相对于   在中找到RelativePathRoot设置   .testrunco​​nfig文件。

默认情况下,该设置是解决方案目录。所以,如果你有这个项目结构

SecretProject\
    ComponentA\
    ComponentA.Test\
        Resources\
            required.xml
        ComponentA.Test.csproj
        Tests.cs
    SecretProject.sln

您想要部署 required.xml ,您将要创建像这样的DeploymentItemAttribute

[TestClass]
public class Tests
{
    [TestMethod]
    [DeploymentItem("ComponentA.Test\Resources\required.xml")]
    public void Test() 
    {

    }
}

似乎文件属性需要设置为“内容”和“始终复制”或“如果更新则复制”。 this MSDN page上有一些高级示例。

答案 1 :(得分:1)

假设RelativePathRoot默认值是您的解决方案所在的dir在我的情况下不正确,也不是在我的.testrunco​​nfig文件中定义RelativePathRoot。我发现RelativePathRoot默认为解决方案的/ bin / debug目录。

从这一点开始,然后走到我试图为单元测试部署的文件中工作正常。

答案 2 :(得分:0)

所以我要添加我的经验。

因此,如果您正在使用.testrunco​​nfig文件,那将胜过(覆盖)我在下面所说的内容。

我认为有几个选择。

  

相对于当前的.csproj

     

相对于.sln

     

相对于当前的.cs文件

我终于通过使用" 相对于当前.cs文件"来使我的构建系统工作。方法

在我的示例中,我需要从我的UnitTest复制的不同项目中使用Xsd。但文件的类型并不重要。

示例:

  

C:\ MyFolder文件\ MyXsdProject \的XSD \ MyCoolXsd.xsd

     

C:\ MyFolder文件\ MyCsharpUnitTestProject \ MySubFolder1 \ MySubFolder2 \ MyUnitTestClass.cs

namespace MyCsharpUnitTestProject.MySubFolder1.MySubFolder2
{

    [TestClass]
    [DeploymentItem(@"..\..\..\MyXsdProject\XSDs\MyCoolXsd.xsd")]

    public class MyUnitTestClass
    {
    }
}