Проект тестирования Visual Studio - не копирует папку при развертывании

Вот проблема:
1. Создайте тестовый проект в своем решении Visual Studio.
2. Откройте файл .testrunconfig и в пункте меню "развертывание" установите флажок "Включить развертывание".
3. Теперь нажмите кнопку "Добавить каталог..." и добавьте папку, в которой есть некоторые файлы.
4. Запустите тестовый проект (используйте фиктивный тест).

Хорошо, теперь перейдите в папку TestResults: вы увидите, что все файлы напрямую скопированы (на верхний уровень) - сама папка не копируется (с файлами под ними). Это путает мои пути во время тестирования. Может ли кто-нибудь сказать, как скопировать папку, а не только файлы под ней?

Спасибо.

Ответы

Ответ 1

Используйте атрибут [DeploymentItem] на тестовых классах, которые его используют. Вы можете указать каталог:

[TestClass]
[DeploymentItem("blahblah\\myDirectory", "myDirectory")]
public class MyTest
{

}

Примечание:

  • DeploymentItem очень медленно запускает тесты. Кажется, он копирует 2 файла в секунду.
  • Вы можете указать атрибут в базовом классе теста. Но это не всегда работает, если у вас есть несколько тестовых проектов.
  • Возможно, вы можете указать его на TestClass, который имеет метод, помеченный [AssemblyInitialize]. Тогда вы должны предоставить его только один раз. Не уверен, вы должны попробовать.
  • Исходный каталог относится к местоположению решения. Это вряд ли документируется.

Ответ 2

Откройте файл .testsettings в блокноте. Теперь вы должны увидеть, что для каждой папки для копирования

<DeploymentItem filename="FolderName\" />

Измените это на

<DeploymentItem filename="FolderName\" outputDirectory="FolderName\" /> 

Ответ 3

Другой вариант, который у вас есть, - создать другую папку под исходной папкой, а затем эта папка будет развернута в каталог out. Например, вы можете создать такую ​​структуру:

TestFolder/

TestFolder/TestDeployment/

И затем в testrunconfig вы по-прежнему выбираете папку TestFolder, и папка TestDeployment будет развернута в каталог out.

Ответ 4

У меня была эта проблема слишком сегодня. Я решил это, добавив в проект папку с именем "deployment_files" , содержащую требуемую папку. Затем я помещаю нужную папку в папку "deployment_files" . Затем я открыл файл LocalTestRun.testrunconfig в папке "Элементы решения" в обозревателе решений. Пошел на панель "Развертывание" в окне свойств testrunconfig. Добавлен каталог "deployment_files" для развертывания и voila. Папка в ней была скопирована в папку результатов вывода результатов.