Каков относительный корень пути для DeploymentItemAttribute? - PullRequest
14 голосов
/ 01 декабря 2009

Используя MSTest , что является корнем относительного пути для DeploymentItemAttribute .

Ответы [ 3 ]

17 голосов
/ 01 декабря 2009

На страницу MSDN ...

Относительные пути относительно Параметр RelativePathRoot находится в Файл .testrunconfig.

Этот параметр по умолчанию является каталогом Solution . Итак, если у вас есть такая структура проекта

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 имеются расширенные примеры .

1 голос
/ 06 марта 2013

Предполагать, что по умолчанию RelativePathRoot является директорией, в которой находится ваше решение, было неверно в моем случае, и RelativePathRoot не был определен в моем файле .testrunconfig. Я обнаружил, что по умолчанию RelativePathRoot является каталогом / bin / debug для решения.

Возвращаясь назад с этой точки, затем подходя к моему файлу, который я пытался развернуть для модульного теста, все работало нормально.

0 голосов
/ 31 октября 2017

Так что я собираюсь добавить свой опыт.

Так что, если вы используете файл .testrunconfig, это превзойдет (переопределит) то, что я говорю ниже.

Я полагал, что есть несколько вариантов.

Относительно текущего .csproj

относительно .sln

Относительно текущего файла .cs

Я наконец-то получил свою систему сборки, используя подход " относительно текущего файла .cs ".

В моем примере мне понадобился Xsd из другого проекта, скопированного для моего UnitTest. Но тип файла не имеет значения.

Пример: * * один тысяча двадцать-одна

C: \ моя_папка \ MyXsdProject \ XSDs \ MyCoolXsd.xsd

C: \ моя_папка \ MyCsharpUnitTestProject \ MySubFolder1 \ MySubFolder2 \ MyUnitTestClass.cs

namespace MyCsharpUnitTestProject.MySubFolder1.MySubFolder2
{

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

    public class MyUnitTestClass
    {
    }
}
...