Классификация случаев MsTest

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

Моя организация будет примерно следующей

  • Модульные тесты
  • Интеграционные тесты
  • Системный тест

Причина этого в том, что все наши тесты еще не стали полностью автоматизированными. Большинство наших модульных тестов полностью автоматизированы, в отличие от интеграционных и системных тестов. Однако все тесты по-прежнему полезно запускать на машинах разработчиков.

Для простоты мне бы хотелось, чтобы мы могли просто зафиксировать наши различные типы тестов с отличительными атрибутами [IntegrationTest] или [TestCategory("Integration")], чтобы наш сервер сборки запускал только те тесты, которые нам нужны.

Я знаю, что в nUnit есть категории тестов, но нашей команде нравится одобрение Microsoft Stamp на интеграции MsTest + IDE.

Как ваша команда решила эту проблему?
Существуют ли расширения, обеспечивающие эту функциональность?
Будет ли это встроено в .Net 4.0?

Спасибо


person Ryu    schedule 14.10.2009    source источник


Ответы (3)


Вы видели функцию Списки тестов? Нажмите Test -> Windows -> Test List Editor, чтобы открыть пользовательский интерфейс для управления списками тестов. Щелкните правой кнопкой мыши List of Tests и выберите New Test List, дав ему имя и сохранив. После этого вы перетаскиваете тесты в новую группу, создавая подмножество All Tests, которые можно запускать вместе.

Другой вариант — использовать функцию фильтра окна инструментов Test View для выбора тестов с похожими характеристиками. Он будет соответствовать частичным, поэтому вы можете переключиться на Test Name и ввести что-то вроде «Asp», чтобы сопоставить все тесты, содержащие эту строку, а затем запустить результаты вместе, выбрав все отфильтрованные элементы. Недостатком является то, что вам потенциально придется переименовывать свои тесты.

В том же духе и ближе к тому, что вы думали, вы можете щелкнуть тесты правой кнопкой мыши в окне Test View, выбрать Properties и заполнить свойство Description или, как вы предложили, украсив тесты атрибутом Description. После этого вы можете использовать предыдущий подход к фильтрации тестов (на этот раз фильтрация по Description), хотя это и не предполагаемое использование поля, это может привести к желаемому результату.

person John Lewin    schedule 17.10.2009

По сути, это разные типы тестов, поэтому их следует размещать в разных проектах.

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

  • Каждая библиотека классов, подлежащая тестированию, должна иметь один (или несколько) связанных проектов модульного тестирования.
  • Интеграционные тесты должны находиться в одном (или нескольких) отдельных тестовых проектах, чтобы вы могли изменять их по мере необходимости.

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

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

person Mark Seemann    schedule 14.10.2009

Да, в .NET 4.0 Beta 2 есть атрибут TestCategory (он не будет исключен в RTM, поскольку бета-версия 2 является полной, насколько мне известно)

http://msdn.microsoft.com/en-us/library/ms182489%28VS.100%29.aspx

person kerbou    schedule 04.02.2010