Сведения о вопросе

Martincow

14:47, 7th August, 2020

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

Просмотров: 441   Ответов: 4

Visual Studio folder structure

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

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

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

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

TestDriven.net test run output

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



  Сведения об ответе

ЯЯ__4

14:28, 10th August, 2020

Я действительно нашел своего рода решение для этого самостоятельно, используя команду клавиатуры, привязанную к макросу. Макрос был записан из меню Сервис>Macros>запись 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

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

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


  Сведения об ответе

PHPH

08:48, 12th August, 2020

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

http://www.codeplex.com/VS2008UnitTestGUI

"описание проекта Этот проект посвящен запуску всех модульных тестов внутри нескольких .NET модульных тестов assembly, закодированных в Visual Studio 2008."


  Сведения об ответе

lesha

13:51, 5th August, 2020

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

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


  Сведения об ответе

darknet

01:31, 10th August, 2020

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться