С# DeploymentItem не удается скопировать файл для модульного теста MSTest

У меня возникают проблемы с копированием XSL-файла в тот же каталог, что и тестовая сборка, когда я использую атрибут DeploymentItem в модульном тесте MSTest. Я следовал выбранному ответу на этот вопрос, и файл, который мне нужно скопировать, имеет его "Копировать в выходной каталог» установлено значение «Всегда копировать». Когда я проверяю свой каталог ProjectDir\bin (целевой каталог), файл, который я хочу скопировать, действительно находится там, наряду с DLL и PDB.

У меня есть пара модульных тестов со следующей настройкой:

private const string DLL = "Service.dll";
private const string XSL_PATH = "transform.xsl";

[TestInitialize]
public void InitializeTest()
{
    Assert.IsTrue(File.Exists(DLL)); // passes
}

[TestMethod]
[DeploymentItem(DLL)]
[DeploymentItem(XSL_PATH)]
public void XmlToResultsTest()
{
    Assert.IsTrue(File.Exists(XSL_PATH)); // fails
}

Тест XSL завершается неудачно, потому что, когда я проверяю каталог MSTest TestResults\particularTestRun\Out, я вижу библиотеки DLL и PDB, но моего файла XSL там нет. Я хочу знать, почему файл XSL не копируется вместе с DLL и PDB, даже когда я явно указываю Visual Studio скопировать его туда через DeploymentItem?


person Sarah Vessels    schedule 25.01.2010    source источник


Ответы (4)


Благодаря ответу Марка Гравелла на связанный Мой вопрос: я попытался обновить свой файл MSTest .testrunconfig, чтобы мой XSL-файл был включен в раздел «Развертывание». Это позволяет пройти моим модульным тестам, но я все еще обеспокоен тем, что мне пришлось это сделать - разве не должно быть достаточно комбинации DeploymentItem и пометки свойств файла в моем проекте для копирования в выходной каталог?

person Sarah Vessels    schedule 25.01.2010
comment
У меня была такая же проблема, Сара - действительно очень запутанно! - person Andy Shellam; 15.02.2010

Предположительно элементы развертывания VS2008 молча терпят неудачу, если выходной каталог не является буквальной строкой. Хм ^_^

person andrewb    schedule 02.03.2010
comment
Где ваш источник для этого? Если это правда, то это просто сумасшествие. Я хочу свои строковые константы, черт возьми! - person Sarah Vessels; 03.03.2010
comment
Не то, что я воспроизвел лично, но у меня были некоторые проблемы с развертыванием, и я погуглил, нашел множество блогов, в которых говорилось о проблемах с DeploymentItem, например: sergeyshishkin.spaces.live.com/blog/ Наконец, я выбрал глобальную папку развертывания в файле .testrunconfig. - person andrewb; 08.03.2010

У меня была та же проблема, хотя я использовал буквальную строку в элементе развертывания. Я даже пытался добавить файл в раздел «Развертывание» тестовых настроек, но это тоже не сработало. Выяснилось, что проблема связана с тестовой платформой.

У меня 64-битная машина, и проект, который я тестировал, и цель платформы проекта модульного тестирования были «Любой процессор».

Я обнаружил, что элемент развертывания копировался только в том случае, если я выбрал «Выполнить тесты в 64-битном процессе на 64-битной машине».

person mgutzwiller    schedule 08.07.2011

У нас была похожая ситуация на работе, когда атрибут DeploymentItem не работал должным образом. Мы также использовали 64-битные машины с платформой проекта, установленной на «Любой процессор». В качестве обходного пути мы включили файл, необходимый для модульного теста, в качестве ссылки из проекта модульного теста и установили для его «Копировать в выходной каталог» значение «Копировать всегда».

person Louis    schedule 12.06.2013