У меня есть тест, который требует, чтобы XML-файл был прочитан, а затем проанализирован. Как мне каждый раз копировать этот файл в папку тестового запуска?
Для XML-файла установлено значение «Копировать, если новее», а режим компиляции - «нет» (так как на самом деле это не компилируемая вещь)
visual-studio
mstest
Аарон Пауэлл
источник
источник
Похоже, что если вы предоставите файл TestSettings для решения, вы можете снять флажок с опции «Включить развертывание» и остановить mstest от попытки запуска из
...TestResults\...\out
папки, в которую он не копирует ваши дополнительные файлы (если вы не сделаете их вариантом развертывания) .Это также полезно, если вы полагаетесь на то, что дополнительные файлы находятся в сохраненной структуре папок, потому что все элементы развертывания кажутся скопированными напрямую (плоскими) во временную папку запуска (вне), если вы используете параметр Развертывание, добавить папку в TestSettings ( ответы выше предполагают, что вы можете сохранить структуру, если добавите каждый элемент в качестве собственного DeploymentItem).
Для меня он отлично работал, выполняя тесты непосредственно в Visual Studio (т.е. мои лишние файлы в их структуре были найдены и использованы тестами), потому что я уже давно создал файл TestSettings по другой причине (в которой параметр Включить развертывание не отмечен), но не тогда, когда TeamCity запустил mstest для запуска тестов, потому что я не указал, что следует использовать файл TestSettings.
Чтобы создать файл TestSettings в Visual Studio, щелкните правой кнопкой мыши решение, выберите «Новый элемент» и выберите шаблон TestSettings. Чтобы использовать файл TestSettings в командной строке mstest.exe, добавьте параметр
/testsettings:C:\Src\mySolution\myProject\local.testsettings
(или добавьте в качестве дополнительного параметра командной строки в TeamCity с соответствующим путем)источник
Ответ Preet используется для развертывания элементов для одного теста. Если вы хотите сделать это на уровне решения, используйте настройки .testrunconfig .
источник
Лучшее решение для меня - использовать настройки тестирования, особенно если нескольким тестам нужны одни и те же файлы данных.
Сначала создайте файл testsettings и добавьте необходимые элементы развертывания (имя файла или папки):
При запуске в Visual Studio используйте «Выбрать файл настроек теста» в меню «Тест \ Настройки теста», чтобы выбрать новые настройки теста.
Запустив mstest, используйте параметр / testsettings, чтобы mstest использовал ваши testsettings.
источник
Вы можете определить DeploymentItem в классе, который содержит метод с атрибутом AssemblyInitialize. Тогда вы уверены, что файлы копируются независимо от того, какой тест вы запускаете.К сожалению, атрибут DeploymentItem выполняется только в классах, которые содержат тесты, которые вы выполняете. Итак, если у вас есть 10 тестовых классов, которые используют один и тот же набор файлов, вам нужно добавить атрибут ко всем из них.
Также выяснилось, что изменения в файлах * .testsettings не обновляются автоматически в Visual Studio. Поэтому после добавления файлов / папок в развертывание в настройках теста вам необходимо повторно открыть файл решения, а затем запустить тесты.
источник
В Visual Studio 2012 vstest.console.exe (встроенный инструмент запуска тестов) запускается с выходным каталогом в качестве текущего пути. Это означает, что вам нужно только включить элементы в свое решение с помощью свойства «Копировать всегда» или «Копировать, если новее», чтобы они использовались в вашем тесте. В общем случае атрибут DeploymentItem не нужен. То же самое применимо при запуске vstest.console.exe из командной строки в каталоге output / test.
В некоторых случаях используется отдельная папка, в том числе при использовании атрибута DeploymentItem. См. Здесь для получения дополнительной информации.
источник