C # DeploymentItem не может скопировать файл для модульного теста MSTest - PullRequest
10 голосов
/ 25 января 2010

У меня проблемы с получением файла 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 не пройден, потому что, когда я проверяю каталог TestResults \ specificTestRun \ Out MSTest, я вижу библиотеки DLL и PDB, но моего файла XSL там нет. Я хочу знать, что почему XSL-файл не копируется вместе с библиотеками DLL и PDB, даже если я явно говорю Visual Studio, чтобы он копировал его через DeploymentItem?

Ответы [ 4 ]

10 голосов
/ 25 января 2010

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

1 голос
/ 12 июня 2013

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

1 голос
/ 08 июля 2011

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

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

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

1 голос
/ 02 марта 2010

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

...