16

使用MSTest , DeploymentItemAttribute的相对路径根是什么。

4

3 回答 3

18

根据MSDN页面...

相对路径相对于 .testrunco​​nfig 文件中的 RelativePathRoot 设置。

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

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() 
    {

    }
}

似乎需要将文件属性设置为“内容”和“始终复制”或“如果较新则复制”。此 MSDN 页面上有高级示例。

于 2009-11-30T21:50:18.367 回答
1

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

从那一点往回走,然后走到我试图为单元测试部署的文件工作正常。

于 2013-03-06T19:51:13.103 回答
0

所以我要补充一下我的经验。

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

我想有几个选择。

相对于当前的 .csproj

相对于 .sln

相对于当前的 .cs 文件

我终于通过使用“相对于当前 .cs 文件”的方法让我的构建系统正常工作。

在我的示例中,我需要为我的 UnitTest 复制一个不同项目的 Xsd。但是文件的类型并不重要。

例子:

c:\myfolder\MyXsdProject\XSDs\MyCoolXsd.xsd

c:\myfolder\MyCsharpUnitTestProject\MySubFolder1\MySubFolder2\MyUnitTestClass.cs

namespace MyCsharpUnitTestProject.MySubFolder1.MySubFolder2
{

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

    public class MyUnitTestClass
    {
    }
}
于 2017-10-31T13:30:51.810 回答