Мне нужен совет относительно того, как легко разделить запуски тестов для модульных тестов и интеграционных тестов в Visual Studio. Часто или всегда я структурирую решение, как показано на рисунке выше: отдельные проекты для модульных и интеграционных тестов. Модульные тесты запускаются очень часто, в то время как интеграционные тесты, естественно, выполняются, когда контекст правильно выровнен.
Моя цель - каким-то образом настроить, какие тесты (или папки тестов) запускать при использовании сочетания клавиш. Тесты предпочтительно должны выполняться графическим тестером (ReSharpers). Так например
- Alt + 1 запускает тесты в проекте BLL.Test,
- Alt + 2 запускает тесты в проекте DAL.Tests,
- Alt + 3 запускает их оба (т.е. все тесты в папке [Tests], и
- Alt + 4 запускает тесты в папке [Tests.Integration].
TestDriven.net имеет возможность запустить только тест в выбранной папке или проекте, щелкнув его правой кнопкой мыши и выбрав «Запустить тест». Быть способным сделать это, но с помощью клавиатуры и графического бегуна, было бы здорово.
В настоящее время я использую VS2008, ReSharper 4 и nUnit. Но совет для настройки в целом, конечно, также приветствуется.
Это немного сложное решение, но вы можете настроить некоторые внешние инструменты для каждой группы тестов, которые вы хотите запустить. Я не уверен, что вы сможете запустить тестовый запуск ReSharper таким образом, но вы можете запустить консольную версию nunit. После настройки этих инструментов вы можете назначить сочетания клавиш для команд «Tools.ExternalCommand1», «Tools.ExternalCommand2» и т. Д.
Это не очень хорошо масштабируется, и его неловко менять, но оно даст вам быстрые клавиши для запуска ваших тестов. Такое ощущение, что должен быть гораздо более простой способ сделать это.
Я на самом деле нашел какое-то решение для этого самостоятельно, используя команду клавиатуры, привязанную к макросу. Макрос был записан из меню Инструменты> Макросы> Запись 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. Это может быть легко возвращено в систему контроля версий и распространено среди всех, кто работает с проектом.
Вы можете использовать макрос VS для анализа XML-файла, а затем вызвать nunit.exe с аргументом командной строки / fixture, чтобы указать, какие классы запускать или создавать файл сохранения выбора и запускать nunit, используя это.
Я никогда не использовал это, но, возможно, это могло бы помочь ....
http://www.codeplex.com/VS2008UnitTestGUI
«Описание проекта Этот проект предназначен для запуска всех модульных тестов внутри нескольких сборочных тестов .NET, написанных в Visual Studio 2008»