Работают ли элементы развертывания MSTest только при наличии в файле параметров тестирования проекта?


Я не могу понять, как должны быть настроены элементы развертывания MSTest. Я смог заставить их работать правильно, изменив файл параметров тестирования проекта, но это не идеально-конфигурация элемента развертывания отделена от отдельных тестов, а пути к файлам, по-видимому, хранятся как абсолютные пути, если файлы не находятся в папке решения.

Я не должен быть в состоянии добавить элемент развертывания с помощью на либо [TestClass] или [TestMethod] без необходимости создавать / изменять файл параметров тестирования проекта? Как мне это сделать?

(честно говоря, я не понимаю необходимости отдельной конфигурации элемента развертывания-почему бы просто не использовать существующие настройки "копировать в выходной каталог" для файлов проекта, которые должны быть элементами развертывания?)

7 75

7 ответов:

ОК этот пост здесь помог мне выяснить, что мне нужно сделать без необходимости вручную добавлять элементы в .

Шаг 1-Включить тест MS и копии 100LogEntries.txt файл в папку назначения Test Data, в корневом каталоге вывода MS Test, который MS Test создает при запуске каждого теста.

так вот как выглядит моя структура выходных папок. (Извините за беспорядок...)

alt text

и вуаля! у нас есть файлы развертывания, программно.

PRO TIP #2-Если вы не используете 2-й строковый аргумент в DeploymentItem атрибут, затем файл будет скопирован в корневую папку из текущего MS Тест.

const string fileName = @"Test Data0LogEntries.txt";

теперь путь к файлу относительно для текущей проверки МС. Как таковой, я эксплицитно сказал развернуть файл в каталог с именем Test Data ... поэтому мне нужно убедиться, что я правильно ссылаюсь на это в своем коде, когда я хочу прочитать в файле.

просто чтобы подтвердить - > полный путь к этому имени файла переводится на что-то вроде C:\lots of blah blah blah\My Solution\TestResults\PureKrome_PUREKROME-PC 2011-01-05 23_41_23\Out\Test Data .. для этого текущего МС Тест.

НТН.

теперь есть изображение единорога, для чтения так много :)

alt text

Я думал, что поделюсь тем, как я столкнулся с проблемами с элементами MSTest и развертывания. Если вы отлаживаете / запускаете свой тест 2-й раз или более из окна "результаты теста", он использует настройки из предыдущего запуска. Однако, если вы отлаживаете / запускаете один и тот же тест из окна "Test View", он использует последние настройки. Я потерял час, пытаясь понять, почему изменения на местном уровне.testsettings не использовались, когда я продолжал запускать отладку на том же тесте из "результатов теста" окно.

Это окно результатов тестирования (не запускайте тесты здесь после внесения изменений в Local.testsettings):

The Test Results Window

и это окно Test View (запустите тесты отсюда после внесения изменений в Local.testsettings):

The Test View Window

Я надеюсь, что это спасет кого-то от головной боли в будущем.

в Visual Studio 2012 выходной каталог является рабочим каталогом, что означает, что атрибут DeploymentItem не требуется для общего случая (где у вас нет конкретных элементов развертывания для каждого теста или для каждого класса). Это означает, что если вам не нужно использовать атрибут DeploymentItem, если есть набор файлов, которые вы хотите использовать во всех своих тестах, или вы не слишком разборчивы в отношении каждого TestClass/TestMethod, имеющего отдельные зависимости развертывания.

вы можете просто выберите проект / показать все файлы и включите вложенные папки и файлы в Visual Studio с атрибутом "копировать всегда" или "копировать, если новее" для вашего проекта, и файлы будут скопированы в ваш выходной каталог с неповрежденной иерархией.

то же самое применяется при запуске vstest.приставка.exe из командной строки. Смотрите здесь за подробностями.

обновление

бывают случаи, когда каталог по умолчанию не будет выводом справочник. В частности, когда вы выбираете Run All Tests путь по умолчанию будет находиться под TestResults\Deploy_... то же самое применяется при использовании runsettings файл или тесты использовать DeploymentItems

выходной каталог будет каталогом по умолчанию, когда вы не используете DeploymentItems и: -

  • вы щелкните правой кнопкой мыши на тест(ы) в Visual Studio и выберите для запуска / отладки, или
  • вы запускаете из командной строки с помощью vstest.приставка.исполняемый.

Если вам нужен отдельный элемент развертывания в отдельных тестовых случаях, пожалуйста, продолжайте и используйте [DeploymentItem("string file path")] атрибут в каждом из тестов.

в моем случае я добавляю атрибут DeploymentItem, он не может вступить в силу немедленно. Я должен закрыть и повторно открыть решение, тогда настроенные атрибуты DeploymentItem вступят в силу.

похоже, это работает по умолчанию в VS.NET 2012

в VS 2012, все, что вам нужно, это сделать log4net.свойства (или любой файл конфигурации для log4net ) скопируйте файл, если он новее. (щелкните правой кнопкой мыши log4net.файл свойств, чтобы вызвать свойства и настроить его)