2016-10-26 3 views
0

У нас есть решение, которое содержит серию проектов, используемых для наших тестов. Один из этих проектов содержит набор файлов, необходимых для тестирования. Эти файлы представляют собой схемы, которые будут проверяться каждый раз, когда вызывается маршрут API. Естественно, тесты называют одним или несколькими маршрутами API.MSTest: .testsettings не всегда разворачивает файлы

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

Проблема в том, что файл .testsettings только изредка соблюдается. Иногда файлы копируются; иногда это не так. Когда они не копируют, мы можем сделать следующее лисицы это:

  • Перейти к Test -> меню Настройки тестирования и выберите Выберите Настройки тестирования
  • Выберите файл .testsettings в растворе
  • Rebuild решение
  • Rerun испытания

Это, как правило, работает по крайней мере один раз. Но неизбежно, он перестает работать, и файлы не разворачиваются снова.

Обратите внимание, что когда вы переходите в меню Test -> Test Settings, наш текущий файл .testsettings всегда проверяется. Поэтому выбор нового файла .testsettings означает выбор того, который выбран пользовательский интерфейс.

Мы думали идти по маршруту DeploymentItem, но это непрактично по двум причинам: поддержание кода.

  1. Из того, что я могу сказать, DeploymentItem может быть помещен только на отдельные испытания. С буквально сотнями тестов мы бы посыпали его всюду. Это станет кошмаром для кодового обслуживания. Я думал о том, чтобы поместить его в глобальный метод TestInitialize, но это просто перезапишет файлы каждый раз, когда будет запущен тест, что кажется ненужным. Не говоря уже о том, что мне пришлось бы добавить буквально десятки атрибутов DeploymentItem, и нам нужно будет поддерживать это обновление каждый раз при добавлении новой схемы.
  2. В связи с этим, добавление новых схем означает изменение существующих тестов там, где это необходимо. Опять же, у нас есть сотни тестов.

Лучшим решением было бы скопировать файлы за один раз, а затем просмотреть код в общем пуле схем каждый раз, когда ему это нужно.

Я также посмотрел на замену .testsettings с помощью .runsettings, но он не имеет узла DeploymentEnabled в XML, и где этот параметр существует, он снова специфичен для DeploymentEnabled.

У кого-нибудь есть решение, или кто-нибудь знает, если это известная ошибка? Проверка подлинности схемы происходит за кулисами - отдельным авторам испытаний не нужно явно ее вызывать - и это не подводит тест, если это не происходит (у нас не всегда есть схемы, доступные для каждого вызова API, поэтому мы не хотим сдавать тест, если это так). В результате часто бывает трудно сразу определить, произошла ли проверка.Из-за этого мы иногда получаем ложные проходы на тестах, где схема действительно сломалась, потому что файл .testsettings фактически не разворачивал наши файлы, как это было установлено.

ответ

0

Итак, я выяснил проблему: очевидно, эта проблема была исправлена ​​в обновлении Visual Studio 2015 Update 3. Мы использовали обновление 2. После того как мы получили новое обновление, эта проблема исчезла.

Смежные вопросы