MsTest: как установить элемент развертывания относительно $ (ProjectDir) или $ (OutDir) - PullRequest
5 голосов
/ 29 августа 2011

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

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


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

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

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

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

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

Ответы [ 2 ]

3 голосов
/ 24 августа 2012

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

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

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

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

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

    [DeploymentItem ("bin")]
    

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

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

1 голос
/ 15 сентября 2011

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

...