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

Структура папок Visual Studio

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

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

  • Alt + 1 запускает тесты в проекте BLL.Test,
  • Alt + 2 запускает тесты в проекте DAL.Tests,
  • Alt + 3 запускает их оба (т.е. все тесты в папке [Tests], и
  • Alt + 4 запускает тесты в папке [Tests.Integration].

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

TestDriven.net вывод теста

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

4 ОТВЕТА

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

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

0
17.08.2008 21:52:03
РЕШЕНИЕ

Я на самом деле нашел какое-то решение для этого самостоятельно, используя команду клавиатуры, привязанную к макросу. Макрос был записан из меню Инструменты> Макросы> Запись TemporaryMacro. Во время записи я выбрал папку [Tests] и запустил 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. Это может быть легко возвращено в систему контроля версий и распространено среди всех, кто работает с проектом.

2
17.08.2008 22:08:13

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

0
18.08.2008 01:47:11

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

http://www.codeplex.com/VS2008UnitTestGUI

«Описание проекта Этот проект предназначен для запуска всех модульных тестов внутри нескольких сборочных тестов .NET, написанных в Visual Studio 2008»

0
25.08.2008 04:03:06