使用MSTest,DeploymentItemAttribute的相对路径根是什么。
答案 0 :(得分:17)
根据MSDN页面...
相对路径是相对于 在中找到RelativePathRoot设置 .testrunconfig文件。
默认情况下,该设置是解决方案目录。所以,如果你有这个项目结构
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在我的情况下不正确,也不是在我的.testrunconfig文件中定义RelativePathRoot。我发现RelativePathRoot默认为解决方案的/ bin / debug目录。
从这一点开始,然后走到我试图为单元测试部署的文件中工作正常。
答案 2 :(得分:0)
所以我要添加我的经验。
因此,如果您正在使用.testrunconfig文件,那将胜过(覆盖)我在下面所说的内容。
我认为有几个选择。
相对于当前的.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
{
}
}