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

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

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

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

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

[CodedUITest]
public class SearchViewTests

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

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

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

4b9b3361

Ответ 1

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

  • ProjectA
  • ProjectA.UnitTests
  • ProjectA.IntegrationTests

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

enter image description here

Ответ 2

TL; версия DR:

Test explorer showing -Trait:"CategoryName" filter

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

-Trait:"DatabaseIntegration"

Это исключает все тесты с этим признаком. документация MSDN по этим функциям имеет следующее объяснение:

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

FilterName:"Criteria" -FilterName:"SubsetCriteria"

Например,

FullName:"MyClass" - FullName:"PerfTest"

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

Ответ 4

Вы можете использовать фильтр поиска в модульном текстовом проводнике.

unit test explorer

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

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

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

Ответ 5

Там фильтр, который вы можете применить в Проводнике тестеров. Trait: "UnitTest" этот фильтр будет отображать только те тесты с атрибутом TestCategory ( "UnitTest" ), игнорируя остальные.

Ответ 6

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

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

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

Ответ 7

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

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