Как исключить определенные тесты в Visual Studio Test Runner?
у меня есть атрибуты для определенных тестов, которые я в идеале не хочу запускать при каждой сборке. Большинство моих тестов-это обычные модульные тесты, и я хочу, чтобы они запускались при каждой сборке.
Итак: как я могу исключить тест по категориям или типу проекта?
например, я хотел бы исключить CodedUItests
:
[CodedUITest]
public class SearchViewTests
...или исключить тесты в данном TestCategory
:
[TestMethod]
[TestCategory("Database Integration")]
public void ContactRepositoryGetByIdWithIdExpectCorrectContact()
Я особенно хочу исключить закодированные тесты пользовательского интерфейса, поскольку они нарушают мой способность продолжать работать, тогда как все остальные тесты будут с удовольствием работать в фоновом режиме, не беспокоя меня.
Первоначально этот вопрос был о Visual Studio 2012, поэтому я бы предпочел решения, которые работают в этой версии и выше.
7 ответов
единственное " решение "(или лучшее обходное решение), которое я нашел, - это указать фильтр" FullName". В основном я обычно структурирую свое решение как
- проект
- Projectа.Unit-тестов
- Projectа.IntegrationTests
и так далее. Теперь я могу указать фильтр в Проводнике тестов, например FullName: "UnitTests"
который, кажется, работает.
(Я ожидал, что смогу использовать регулярное выражение в имени поиска, но, похоже, это не так поддерживаемый.)
TL; DR версия:
другие ответы прокомментировали обходные пути и использовать более поздние Traits
параметры. Тем не менее, никто не говорит вам, как конкретно исключить тесты для признака. Для этого просто используйте -
(минус) для отрицания фильтра в поле поиска, например:
-Trait:"DatabaseIntegration"
Это исключит все тесты с этой чертой. The документация MSDN по этим функциям имеет следующие объяснение:
чтобы исключить подмножество результатов фильтра, используйте следующий синтаксис:
FilterName:"Criteria" -FilterName:"SubsetCriteria"
например,
FullName:"MyClass" - FullName:"PerfTest"
возвращает все тесты, которые включают " MyClass "в свое имя, за исключением тех тестов, которые также включают" PerfTest " в свое имя.
в Visual Studio 2012 Update 1 CTP добавлена поддержка группировки по проектам и категориям (признакам) в Обозревателе тестов. http://blogs.msdn.com/b/visualstudioalm/archive/2012/10/08/visual-studio-2012-update-1-ctp.aspx http://go.microsoft.com/fwlink/?LinkId=268021
вы можете использовать фильтр поиска в текстовом Проводнике.
в новом тестовом Exlorer, поставляемом с 2012, Вы можете группировать тесты по "результатам тестирования", "имя файла",... etc но в RTM build group / search by 'TestCategory' нет из Проводника тестов. Однако в командной строке и TeamBuild есть фильтр на основе TestCategory (запуск выборочных модульных тестов в VS 2012 RC с помощью TestCaseFilter) в VS2012.
от члена команды VS dev, они понял важность этой недостающей черты. Он находится в отставании, и он должен быть доступен в сборках/обновлениях furutre.
следующий блог предоставляет более подробную информацию: http://blogs.msdn.com/b/vikramagrawal/archive/2012/07/23/running-selective-unit-tests-in-vs-2012-rc-using-testcasefilter.aspx
в Проводнике тестов есть фильтр, который вы можете применить. Черта: "UnitTest"этот фильтр будет отбирать только тесты с атрибутом TestCategory ("UnitTest"), игнорируя другие.
немного поздно в partyI была та же проблема, когда все разработчики столкнулись с разрушительным CodedUI при запуске всех модульных тестов в решении. Мой обходной путь-добавить следующее В AssemblyInitializer проекта CodedUI:
if(!ConfigurationManager.AppSettings["MachinesToRunCodedUI"].Split(',').Contains(Environment.MachineName))
Assert.Inconclusive("CodedUI Tests are skipped.");
только когда машина является частью этого списка MachinesToRunCodedUI, она будет запускать тесты CodedUI.
вы видели эту статью? как: группировать и запускать автоматические тесты с помощью категорий тестов
Я еще не пробовал это с VS 2012, но он все еще может быть действительным. Насколько я мог видеть, нет ссылок на TFS, поэтому это должно указывать на обычный vs test runner.