Подтвердить что ты не робот

MSTest - Скрыть некоторые модульные тесты с сервера сборки

У меня есть три модульных теста, которые нельзя передать при запуске с сервера сборки - они полагаются на учетные данные пользователя, выполняющего тесты.

Есть ли способ (атрибут???) Я могу скрыть эти три теста с сервера сборки и запустить все остальные?

Наш эксперт по строительным серверам говорит мне, что генерация файла vsmdi, который исключает эти тесты, сделает трюк, но я не уверен, как это сделать.

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

4b9b3361

Ответ 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, если я хочу запустить тесты интеграции, и мне стало легче, чем редактировать список тестов.