Как исключить определенные тесты в Visual Studio Test Runner?

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

Итак: как исключить тест по категории или типу проекта?

Например, я хотел бы исключить CodedUItests:

[CodedUITest]
public class SearchViewTests

...или исключить тесты в заданном TestCategory:

[TestMethod]
[TestCategory("Database Integration")]
public void ContactRepositoryGetByIdWithIdExpectCorrectContact()

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

Первоначально этот вопрос был о Visual Studio 2012, поэтому я бы предпочел решения, которые работают в этой версии и выше.


person Fenton    schedule 25.09.2012    source источник
comment
вы используете сервер сборки?   -  person Cybermaxs    schedule 25.09.2012
comment
Это локальный Test Runner, встроенный в Visual Studio 2012, поэтому он работает с кодом, который я еще не зафиксировал. Я знаю, как делать то, что хочу, с MSBuild, но не с локальным Test Runner.   -  person Fenton    schedule 25.09.2012


Ответы (7)


Единственное «решение» (или лучший обходной путь), которое я нашел работающим, - это указать фильтр «Полное имя». В основном я обычно структурирую свое решение как

  • ПроектА
  • ProjectA.UnitTests
  • ProjectA.IntegrationTests

и так далее. Теперь я могу указать фильтр в обозревателе тестов, например FullName: "UnitTests", который, кажется, работает.
(Я ожидал, что смогу использовать регулярное выражение в имени поиска, но, похоже, оно не поддерживается.)

введите здесь описание изображения

person Juri    schedule 03.10.2012
comment
Заметка Тодда о скором появлении этой функции — отличная новость, но это временное решение, которое работает лучше всего для меня, поскольку я могу отфильтровать FullName:"MyProject.Integration.Tests", чтобы просто просмотреть интеграционные тесты, и FullName:"MyProject.Tests", чтобы увидеть модульные тесты. - person Fenton; 12.10.2012

Версия TL;DR:

Проводник тестов, показывающий фильтр -Trait:CategoryName

В других ответах прокомментированы обходные пути и использование более поздних параметров Traits. Однако ни один из них не говорит вам, как именно исключить тесты для признака. Для этого просто используйте - (минус), чтобы отменить фильтр в поле поиска, например:

-Trait:"DatabaseIntegration"

Это исключит все тесты с этим свойством. В документации MSDN по этим функциям есть следующее пояснение:

Чтобы исключить подмножество результатов фильтра, используйте следующий синтаксис:

FilterName:"Criteria" -FilterName:"SubsetCriteria"

Например,

FullName:"MyClass" - FullName:"PerfTest"

возвращает все тесты, в имени которых есть "MyClass", за исключением тех тестов, в имени которых также есть "PerfTest".

person Jeroen    schedule 29.10.2014
comment
Я бы хотел, чтобы у него была подстановочная функция -trait:%Criteria, но, увы, принятие желаемого за действительное - person rjt011000; 12.04.2019

В 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

person Todd King    schedule 10.10.2012

Вы можете использовать фильтр поиска в Unit Text Explorer.

обозреватель модульных тестов

В новом Test Explorer, поставляемом с 2012 года, вы можете группировать тесты по «Результатам теста», «Имя файла» и т. д., но в RTM-сборке группа/поиск по «TestCategory» отсутствует в Test Explorer. Однако в VS2012 есть фильтр в командной строке и TeamBuild на основе TestCategory (выполнение выборочных модульных тестов в VS 2012 RC с использованием TestCaseFilter).

От члена команды разработчиков VS они поняли важность этой отсутствующей функции. Он находится в бэклоге и должен быть доступен в будущих сборках/обновлениях.

В следующем блоге можно найти более подробную информацию: using-testcasefilter.aspx" rel="nofollow noreferrer">http://blogs.msdn.com/b/vikramagrawal/archive/2012/07/23/running-selective-unit-tests-in-vs-2012-rc -using-testcasefilter.aspx

person Cybermaxs    schedule 25.09.2012

В обозревателе тестов можно применить фильтр. Черта: "UnitTest" этот фильтр выберет только тесты с атрибутом TestCategory("UnitTest"), игнорируя остальные.

person Waldyr Felix    schedule 04.12.2012

Немного опоздав на вечеринку, у меня была та же проблема, когда все разработчики столкнулись с разрушительным CodedUI, когда просто запускали все модульные тесты в решении. Мой обходной путь — добавить в AssemblyInitializer проекта CodedUI следующее:

    if(!ConfigurationManager.AppSettings["MachinesToRunCodedUI"].Split(',').Contains(Environment.MachineName))
        Assert.Inconclusive("CodedUI Tests are skipped.");

Только когда машина является частью этого списка MachinesToRunCodedUI, она будет запускать тесты CodedUI.

person Nick    schedule 15.07.2016

Вы видели эту статью? Как группировать и запускать автоматические тесты с использованием категорий тестов

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

person Jens H    schedule 25.09.2012
comment
Я не думаю, что это в VS2012 - тестовое представление было заменено Test Explorer, и, похоже, оно не учитывает категории - хотя ответ Cybermaxs предполагает, что команда разработчиков VS может добавить его. В статье, эквивалентной VS2012, говорится, что в настоящее время она доступна только через командную строку: msdn.microsoft.com/en-us/library/dd286683%28v=vs.110%29.aspx - person Fenton; 25.09.2012