Отладка тестов, работающих под NUnit - PullRequest
10 голосов
/ 15 февраля 2012

У меня есть решение .NET 4.0 C # с проектом тестов, который запускает модульные тесты под NUnit.Двоичные файлы NUnit v3.5.

Я могу отлично запустить тесты, но не могу установить точки останова и ни одного шага в Visual Studio.Я предполагаю, что это вызвано несовпадением версий .NET.Есть ли способ выполнить пошаговую сборку тестов v4.0 с помощью nunit для v3.5?

Ответы [ 5 ]

27 голосов
/ 19 марта 2012

Проблема в том, что, если вы не укажете обратное, NUnit вызовет подпроцесс для запуска тестов, когда сочтет это необходимым. Если вы посмотрите его в Process Explorer, вы увидите, что «nunit-console.exe» * порождает «nunit-agent.exe» *. Отладчик Visual Studio не подключается автоматически к дочерним процессам.

В этом случае я считаю, что несовпадение версий является причиной запуска подпроцесса. Самый простой способ обойти это - отредактировать «nunit-console.exe.config» *, чтобы изменить набор значений <supportedRuntime>. Там уже должен быть комментарий, отмечающий строку, которую вы должны закомментировать, чтобы заставить его работать как .NET 4.0:

<startup useLegacyV2RuntimeActivationPolicy="true">
  <!-- Comment out the next line to force use of .NET 4.0 -->
  <supportedRuntime version="v2.0.50727" />
  <supportedRuntime version="v4.0.30319" />
</startup>

Как только вы это измените, первым процессом NUnit будет уже .NET 4.0, и он не должен вызывать подпроцесс. Если вы хотите быть уверенным, укажите /process=Single, и NUnit будет работать в одном процессе или сразу завершится с ошибкой, если не сможет.

* - Если вам нужно использовать версии x86, замените:

nunit-console.exe        -> nunit-console-x86.exe
nunit-agent.exe          -> nunit-agent-x86.exe
nunit-console.exe.config -> nunit-console-x86.exe.config
7 голосов
/ 01 февраля 2017

В случае, если кому-то из моих знакомых это полезно, ему 4 года, но я следил за ответами здесь, и они были полезны. Хотя мой ответ и для другой полной версии NUnit, однако для кого-то вроде меня, который только что обнаружил это, я установил NUnit и консоль NUnit через Управление пакетами NuGet ... (1-й и 3-й вариант на снимке экрана) enter image description here и так настроил вкладку «Отладка» моего тестового проекта (см. следующий снимок экрана ниже) в выпуске VS2015 Community Edition для запуска nunit3-console.exe, который находится в папке \ packages, которая автоматически создается при установке «NUnit Console» и для аргументов Я добавил свою библиотеку тестов dll и переключатели командной строки --wait (что побуждает разработчика «нажать любую клавишу, чтобы закрыть», чтобы вы могли видеть результат), и, что более важно, --inprocess, который автоматически присоединяет код .NET вашей тестовой библиотеки, чтобы ваши точки разрыва поражены.

enter image description here

Обратите внимание, что для запуска консольного приложения NUnit3 вы задали тестовый проект в качестве стартового проекта.

3 голосов
/ 15 февраля 2012

Другой вариант - использовать http://testdriven.net/ для запуска ваших тестов через Visual Studio, вы можете поставить точку останова на тесте и щелкнуть правой кнопкой мыши -> запустить тесты -> с помощью отладчика.

2 голосов
/ 15 февраля 2012

Я уверен в консольном приложении, но вы должны обнаружить, что можете запустить версию NUnit с графическим интерфейсом вручную, а затем подключиться к процессу nunit-agent из отладчика в Visual Studio.

2 голосов
/ 15 февраля 2012

Resharper позволяет вам проходить тесты модулей во время отладки. Но я не думаю, что вы можете сделать то же самое с Visual Studio. Попробуйте установить пробную версию Resharper, а затем попытайтесь отладить тесты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...