MSTest - Скрыть некоторые модульные тесты с сервера сборки
У меня есть три модульных теста, которые нельзя передать при запуске с сервера сборки - они полагаются на учетные данные пользователя, выполняющего тесты.
Есть ли способ (атрибут???) Я могу скрыть эти три теста с сервера сборки и запустить все остальные?
Наш эксперт по строительным серверам говорит мне, что генерация файла vsmdi, который исключает эти тесты, сделает трюк, но я не уверен, как это сделать.
Я знаю, что могу просто поместить эти три теста в новый проект, и наш администратор сборки-сервера явно исключает его, но мне очень хотелось бы иметь возможность использовать простой атрибут для оскорбительных тестов.
Ответы
Ответ 1
Вы можете пометить тесты категорией, а затем запустить тесты на основе категории.
[TestCategory("RequiresLoginCredentials")]
public void TestMethod() { ... }
При запуске mstest
вы можете указать /category:"!RequiresLoginCredentials"
Ответ 2
Существует IgnoreAttribute
. В сообщении также перечислены другие подходы.
Ответ 3
Другие ответы старые.
В современной визуальной студии (2012 и выше) тесты выполняются с vstest, а не с mstest.
Новый параметр командной строки /TestCaseFilter:"TestCategory!=Nightly"
как описано в этой статье.
Ответ 4
Откройте Test- > Windows- > Editor List Editor Editor.
Там вы можете включать/скрывать тесты
Ответ 5
Я выяснил, как фильтровать тесты по категориям в определении сборки VS 2012. Я не мог найти эту информацию в другом месте.
в поле Test Case Filter в тестовом источнике в разделе "Автоматизированные тесты" в разделе "Параметры процесса сборки" на вкладке "Процесс" вам нужно написать TestCategory = MyTestCategory (без кавычек в любом месте)
Затем в тестовом исходном файле вам необходимо добавить атрибут TestCategory. Я видел несколько способов сделать это, но то, что работает для меня, добавляет его в тот же атрибут, что и TestMethod, следующим образом.
[TestCategory ( "MyTestCategory" ), TestMethod()]
Здесь вам понадобятся кавычки
Ответ 6
Когда я запускаю модульные тесты из определения сборки VS (который не является точно MSTest), на вкладке "Критерии" свойства "Автоматизированные тесты" я указываю:
TestCategory!=MyTestCategory
Все тесты с категорией MyTestCategory пропущены.
Ответ 7
Мой предпочтительный способ сделать это - иметь 2 варианта тестовых проектов в моем решении: один для модульных тестов, который может быть выполнен из любого контекста и должен всегда проходить, а другой - с интеграционными тестами, для которых требуется, чтобы конкретный контекст работал правильно (учетные данные пользователя, база данных, веб-службы и т.д.). В моих тестовых проектах используется соглашение об именах (например: businessLogic.UnitTests vs. businessLogic.IntegrationTests), и я настраиваю сервер сборки только для выполнения модульных тестов (*.UnitTests). Таким образом, мне не нужно комментировать IgnoreAttributes, если я хочу запустить тесты интеграции, и мне стало легче, чем редактировать список тестов.