MsTest: как установить элемент развертывания относительно $ (ProjectDir) или $ (OutDir)

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

Я надеялся на что-то вроде: [DeploymentItem(@"$(ProjectDir)..\..\bin\$(Configuration)")], но я не нашел никакой документации, и, похоже, это не работает.


Я только что сделал небольшой тест. Просто код мастера и один элемент развертывания:

[TestMethod]
[DeploymentItem("stdafx.cpp")]
void TestMethod1()
{
    Assert::Fail();
};

а файл trx показывает следующую строку:

Предупреждение: проблема развертывания тестового запуска: не удалось получить файл для элемента развертывания 'stdafx.cpp', указанного в тесте 'TestProject1.UnitTest1.TestMethod1': System.IO.FileNotFoundException: не удалось найти файл 'd: \ Development \ Projects \ развертываниеItemTest \ stdafx.cpp '. System.IO.FileNotFoundException: не удалось найти файл d: \ Development \ Projects \ deploymentItemTest \ stdafx.cpp. Имя файла: 'd: \ Development \ Projects \ deploymentItemTest \ stdafx.cpp'

это означает, что "stdafx.cpp" ищется относительно каталога решения (который находится в ... \ depoymentItemTest), а не каталога проекта (который находится в ... \ depolymentItemTest \ TestProject1)


person Tobias Langner    schedule 29.08.2011    source источник


Ответы (2)


Я знаю, что это старый вопрос, но мой ответ может помочь другим. Мне удалось решить эту проблему с помощью двух простых шагов:

  1. Создайте следующее событие сборки в тестовом проекте:

    xcopy /I /S /Y  "$(TargetDir)*.*" "$(SolutionDir)\bin"
    

    Это скопирует все содержимое (включая подкаталоги) папки проекта в папку «bin» относительно решения.

  2. Добавьте в тестовый класс следующий DeploymentItem:

    [DeploymentItem ("bin")]
    

    Это скопирует все содержимое корзины в тестовую папку

Этот механизм можно усовершенствовать (при необходимости) с помощью дополнительных фильтров как в событии сборки, так и в DeploymentItem.

person Miguelb    schedule 24.08.2012

Пусть тестовая установка скопирует файл в Environment.CurrentDirectory.

person Thomas Eyde    schedule 15.09.2011
comment
это неправильное направление - я хочу, чтобы элемент был скопирован из места, куда не нужно. - person Tobias Langner; 04.04.2012