【问题标题】:What is the relative path root of DeploymentItemAttribute?DeploymentItemAttribute 的相对路径根是什么?
【发布时间】:2009-11-30 21:45:47
【问题描述】:

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

【问题讨论】:

    标签: .net unit-testing mstest deploymentitem


    【解决方案1】:

    根据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上有高级示例。

    【讨论】:

    • "文件属性似乎需要设置为'内容'和'始终复制'或'如果更新则复制'。"你会惊讶于找到这个有多难......
    • @SouthShoreAK - 在哪里找到的?
    • @ScottLangham 在部署项的文件属性中。在“解决方案资源管理器”中,您需要突出显示文件(在本例中为“required.xml”),右键单击它并选择属性。你应该在那里看到它。
    • 这怎么可能是正确的答案? RelativePathRoot 是在项目属性 -> 构建中定义的输出路径 (bin\Debug)。默认不是项目目录。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      我想有几个选择。

      相对于当前的.csproj

      相对于.sln

      相对于当前的.cs文件

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

      在我的示例中,我需要一个来自不同项目的 Xsd,为我的 UnitTest 复制过来。但文件类型无关紧要。

      例子:

      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
          {
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2020-11-16
        • 1970-01-01
        • 1970-01-01
        • 2020-12-04
        • 1970-01-01
        • 2018-09-19
        • 2014-09-22
        • 2012-05-04
        • 2021-10-25
        相关资源
        最近更新 更多