Машина Visual Studio 2010, x64, используя встроенный веб-сервер для размещения службы WCF с набором модульных тестов с использованием встроенной тестовой среды.
У меня есть файл XML, который мои тесты нужно загрузить для запуска. Я включил этот файл в тестовый проект и установил файл в 'content' и 'always copy to output directory'. Этот файл копирует в каталог bin\debug.
Однако при выполнении тестов файл xml отсутствует. Вместо того, чтобы искать в папке bin\debug проекта, он ищет ее в тестовом рабочем каталоге, C:\Projects\SAP Reapprovals\TestResults\name_machine 2010-12-06 13_45_43\Out ". Файл не был скопирован там.
Есть ли способ заставить этот файл копировать или мне нужно полностью квалифицировать ссылку из теста?
TIA!
Джеймс
Обновить
Я установил атрибут DeploymentItem
, но файл все равно не копируется. Но это точно похоже на то, что я хочу... любые идеи, почему это не работает?
Мой тестовый код:
[TestMethod]
[DeploymentItem("SAP - GS3 format.xml")]
public void TestProcessSapRoles() {
// I get a 'file not found' error here, and when
// I check the output directory, it isn't there
XElement rolesRoot = XElement.Load("SAP - GS3 format.xml");
}
ОТВЕТЫ:
Спасибо, пошел к CPedros, с его помощью я немного увеличил это. Я запустил монитор процессов SysInternals, чтобы посмотреть, где он ищет мой XML файл. Вот что я нашел:
Когда я запускал тесты с помощью ctrl + r, ctrl + t (тесты отладки в текущем контексте), visual studio игнорировался DeploymentItem
полностью и даже не выполнил try, чтобы скопировать файл в любом месте. В этом случае я получил исключение "Файл не найден", когда пытался его открыть для чтения. Visual studio создала временный рабочий каталог для тестов, но в нем был только один файл AgentRestart.dat.
Когда я запускал тесты, используя кнопку "Run Unit Tests" на моей панели инструментов (не уверен, какая опция теста), Visual Studio не копировала файл, а ссылалась на него непосредственно из каталога проекта. Тест прошел, и временный рабочий каталог не был создан.
Когда я запустил тест из опции меню "run → tests in current context" (запустить, а не отлаживать), был создан временный рабочий каталог, и файл xml и все исполняемые файлы были скопированы на него. Тест прошел.
Когда я редактировал Local.testsettings(в папке Solution Items в папке моих тестов), я выбрал "Развертывание" в левом меню и добавил файл xml. Он был добавлен как [каталог решений]\[каталог проекта]\file.xml. Я удалил атрибут DeploymentItem
. Теперь мне удалось отладить тесты; xml файл и все исполняемые файлы были скопированы во временный каталог, созданный для теста.
TL;DR: Visual Studio игнорирует атрибут DeploymentItem
для определенных способов запуска теста. Решение состоит в том, чтобы отредактировать Local.testsettings
, меню Deployment
и добавить файл вручную.
Спасибо за помощь! Я даю CPedros кредит за его ответ, так как это было самым полезным в разрешении этого.