MSTest - Скрыть некоторые модульные тесты от сервера сборки - PullRequest
25 голосов
/ 19 мая 2011

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

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

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

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

Ответы [ 7 ]

34 голосов
/ 19 мая 2011

Вы можете пометить тесты категорией, а затем запустить тесты на основе категории.

[TestCategory("RequiresLoginCredentials")]
public void TestMethod() { ... }

При запуске mstest можно указать /category:"!RequiresLoginCredentials"

3 голосов
/ 06 июля 2016

Другие ответы старые.

В современной Visual Studio (2012 и выше) тесты запускаются с vstest , а не с mstest.

Новый параметр командной строки - /TestCaseFilter:"TestCategory!=Nightly" как объяснено в этой статье.

3 голосов
/ 19 мая 2011

Есть IgnoreAttribute.В посте также перечислены другие подходы.

2 голосов
/ 19 мая 2011

Откройте Test-> Windows-> Test List Editor.

Там вы можете включить / скрыть тесты

1 голос
/ 09 декабря 2014

Мой предпочтительный способ сделать это - иметь в своем решении 2 вида тестовых проектов: один для модульных тестов, которые могут выполняться из любого контекста и всегда должны проходить, и другой с интеграционными тестами, для которых требуется определенный контекст для правильной работы. (учетные данные пользователя, база данных, веб-сервисы и т. д.). Мои тестовые проекты используют соглашение об именах (например: businessLogic.UnitTests против businessLogic.IntegrationTests), и я настраиваю свой сервер сборки для запуска только модульных тестов (* .UnitTests). Таким образом, мне не нужно комментировать IgnoreAttributes, если я хочу запустить интеграционные тесты, и я нашел это проще, чем редактировать список тестов.

1 голос
/ 08 декабря 2014

Когда я запускаю модульные тесты из определения сборки VS (которое не совсем MSTest), на вкладке Критерии свойства Automated Tests я указываю:

TestCategory!=MyTestCategory

Все тесты с категорией MyTestCategory пропущены.

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

Я выяснил, как фильтровать тесты по категориям в определении сборки VS 2012. Я не смог найти эту информацию где-либо еще.

в поле Фильтр тестовых случаев в разделе Источник тестов в разделе Автоматизированные тестыв параметрах процесса Build на вкладке Process необходимо написать TestCategory = MyTestCategory (без кавычек)

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

[TestCategory ("MyTestCategory"), TestMethod ()]

Здесь вам нужны кавычки

...