Как мне запускать (модульные) тесты в разных папках / проектах отдельно в Visual Studio?

StackOverflow https://stackoverflow.com/questions/13938

Вопрос

Visual Studio folder structure

Мне нужен несколько советов относительно того, как я могу легко разделить тестовые запуски для модульных тестов и интеграционных тестов в Visual Studio.Часто или всегда я структурирую решение так, как показано на рисунке выше:отдельные проекты для модульных тестов и интеграционных тестов.Модульные тесты выполняются очень часто, в то время как интеграционные тесты, естественно, выполняются при правильном выравнивании контекста.

Моя цель - каким-то образом иметь возможность настраивать, какие тесты (или тестовые папки) запускать, когда я использую сочетание клавиш.Предпочтительно, чтобы тесты выполнялись графическим тестировщиком (ReSharpers).Так, например

  • Alt + 1 запускает тесты в project BLL.Test,
  • Alt + 2 запускает тесты в project DAL.Тесты,
  • Alt + 3 запускает их оба (т.е.все тесты в папке [Tests] и
  • Alt + 4 запускает тесты в папке [Тесты.Интеграция].

TestDriven.у net есть возможность запустить только тест в выбранной папке или проекте, щелкнув по нему правой кнопкой мыши и выбрав Запустить тест (ы).Возможность сделать это, но с помощью команды клавиатуры и графического тестового запуска, была бы потрясающей.

TestDriven.net test run output

В настоящее время я использую VS2008, ReSharper 4 и NUnit.Но советы по настройке в целом, конечно, также приветствуются.

Это было полезно?

Решение

Я действительно нашел своего рода решение для этого самостоятельно, используя клавиатурную команду, привязанную к макросу.Макрос был записан из меню Сервис>Макросы>Записать временный макрос.Во время записи я выбрал папку [Тесты] и запустил ReSharpers UnitTest.ContextRun.Это привело к следующему макросу,

Sub TemporaryMacro()
    DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate
    DTE.ActiveWindow.Object.GetItem("TestUnitTest\Tests").Select(vsUISelectionType.vsUISelectionTypeSelect)
    DTE.ExecuteCommand("ReSharper.UnitTest_ContextRun")
End Sub

который затем был привязан к своей собственной команде клавиатуры в меню Инструменты> Параметры> Среда> Клавиатура.

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

Другие советы

Это немного сложное решение, но вы могли бы настроить некоторые внешние инструменты для каждой группы тестов, которые вы хотите запустить.Я не уверен, сможете ли вы таким образом запустить тестовый запуск ReSharper, но вы можете запустить консольную версию nunit.После настройки этих инструментов вы можете назначить сочетания клавиш для команд "Tools.ExternalCommand1", "Tools.ExternalCommand2" и т.д.

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

Вы можете использовать макрос VS для анализа XML-файла, а затем вызвать nunit.exe с аргументом командной строки /fixture, чтобы указать, какие классы запускать, или сгенерировать файл сохранения выбора и запустить nunit, используя его.

Я никогда этим не пользовался, но, возможно, это могло бы помочь....

http://www.codeplex.com/VS2008UnitTestGUI

"Описание проекта Этот проект посвящен запуску всех модульных тестов внутри multiple.СБОРКА чистых модульных тестов, закодированная в Visual Studio 2008".

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top