Запуск модульных тестов и интеграционных тестов отдельно с использованием MSTest - PullRequest
16 голосов
/ 09 ноября 2011

Мы используем Visual Studio 2010 Ultimate с тестами, написанными на MSTest. Наши модульные и интеграционные тесты * написаны на MSTest.

** По нашему определению, интеграционный тест - это MSTest TestMethod, который запускается и / или вызывает внешние компоненты, такие как база данных или веб-службы. *

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

Мои идеи пока:

  1. Пометить интеграционные тесты атрибутом [Ignore]. Это работает, но это настоящая боль, когда вы хотите запустить интеграционные тесты.

  2. Назначьте атрибут [TestCategory] для различных типов тестов. Это позволяет запускать их отдельно, но только через панель «Просмотр теста». Вы не можете использовать клавиши CTRL + R, A («Запустить все тесты в растворе») или другие подобные сочетания клавиш / горячие клавиши.

  3. Интеграционные тесты находятся в отдельном проекте, можно ли что-то сделать, чтобы остановить их выполнение на уровне проекта? Пока это легко переключаться.

  4. Напишите интеграционные тесты в другой тестовой среде, например, NUnit. Это будет держать их совершенно отдельно от инструментальной точки зрения.

У кого-нибудь есть еще предложения? Существуют ли плагины, которые могут помочь с этим?

Ответы [ 3 ]

6 голосов
/ 11 ноября 2011

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

Но я также рекомендую, если вы используете MSTest, использовать атрибут TestCategoryAttribute для пометки не модульных тестов.Затем вы можете «фильтровать» тесты для запуска в тестовом представлении с помощью MSTest.

Бегуны, такие как Resharper и, по-видимому, TestDriven.net (http://bit.ly/tmtYC2) позволяют затем отфильтровывать эти тесты из общего модуля-выполнение теста.

5 голосов
/ 09 ноября 2011

Если ваш модульный тестовый проект находится в отдельном пространстве имен, вы можете использовать сочетание клавиш CTRL+R, T для запуска всех тестов в текущем контексте (т. Е. namespace MyApp.Tests.Unit).Для этого поместите курсор сразу после открывающей фигурной скобки в предложении namespace любого класса модульного теста.

1 голос
/ 09 ноября 2011

У меня есть предложение, но оно тебе не понравится.

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

(Примечание:Остановленная во времени часть может быть неверной, потому что я признаюсь, что не обращал особого внимания на MSTest, поскольку я использовал его экономно с VS 2008)

Я использую NUnit и отделяю свои модульные тесты от интеграционных тестовиспользуя другой проект библиотеки классов.Затем я автоматизирую выполнение тестов с помощью программы запуска командной строки Gallio, позволяя мне настраивать отдельные сценарии для запуска модульных и интеграционных тестов.

Наконец, если не считать личных мнений, я не уверен, но TestDriven.Плагин net может иметь поддержку для запуска тестов только с определенной категорией, так что вы можете проверить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...