Как запустить NUnit в режиме отладки из Visual Studio? - PullRequest
116 голосов
/ 17 апреля 2009

Я недавно создавал тестовый фреймворк для немного C #, над которым я работал. У меня есть настроенный NUnit и новый проект в моей рабочей области для тестирования компонента. Все работает хорошо, если я загружаю свои модульные тесты из Nunit (v2.4), но я дошел до того, что было бы очень полезно запустить в режиме отладки и установить некоторые точки останова.

Я попробовал предложения из нескольких руководств, которые все предлагают изменить свойства 'Debug' тестового проекта:

Start external program: C:\Program Files\NUnit 2.4.8\bin\nunit-console.exe
Command line arguments: /assembly: <full-path-to-solution>\TestDSP\bin\Debug\TestDSP.dll

Я использую консольную версию, но также пробовал вызывать графический интерфейс. И то и другое выдает мне ту же ошибку, когда я пытаюсь начать отладку:

Cannot start test project 'TestDSP' because the project does not contain any tests.

Это потому, что я обычно загружаю \ DSP.nunit в графический интерфейс Nunit, и там проводятся тесты?

Я начинаю думать, что проблема может заключаться в том, что VS хочет запустить свою собственную тестовую среду, и поэтому ей не удается найти тесты NUnit?

Редактировать : Для тех, кто спрашивает о тестовых приспособлениях, один из моих файлов .cs в проекте TestDSP выглядит примерно так:

namespace Some.TestNamespace
{
    // Testing framework includes
    using NUnit.Framework;

    [TestFixture]
    public class FirFilterTest
    {
        [Test]
        public void Test01_ConstructorTest()
        {
            ...some tests...
        }
    }
}

... Я довольно новичок в C # и тестовой среде NUnit, поэтому вполне возможно, что я пропустил какую-то важную информацию; -)

Окончательное решение : Большой проблемой был проект, который я использовал. Если вы выберете Other Languages -> Visual C# -> Test -> Test Project ... при выборе типа проекта, то, насколько я могу судить, Visual Studio попытается использовать свою собственную среду тестирования. Вместо этого вы должны выбрать обычный проект библиотеки классов C #, и тогда инструкции в моем выбранном ответе будут работать.

Ответы [ 19 ]

100 голосов
/ 17 апреля 2009

Когда мне нужно отладить свои тесты NUnit, я просто присоединяюсь к приложению NUnit GUI nunit-agent.exe с помощью «Отладка | Присоединить к процессу» и запускаю тесты из графического интерфейса. Любые точки останова в моих тестах (или код, который они тестируют) поражены. Я неправильно понимаю ваш вопрос, или это сработает для вас?

45 голосов
/ 17 апреля 2009

Я использую ту же технику, что и вы, Jon, без флага / assembly, т.е.

Start External Program: C:\Program Files\NUnit 2.4.8\bin\nunit.exe

Command line arguments: "<path>\bin\Debug\Quotes.Domain.Tests.dll"

Содержит ли TestDSP.dll все ваши TestFixtures?

Поскольку мой тестовый проект не является проектом запуска в решении, я запускаю свои тесты, щелкая правой кнопкой мыши по тестовому проекту и выбирая Отладка -> Начать новый экземпляр

21 голосов
/ 11 июня 2010

Просто удалите строку, которая выглядит как

<ProjectTypeGuids>
    {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
</ProjectTypeGuids>

из вашего файла проекта. Эта строка в основном сообщает VS.Net, что это тестовый проект, то есть «Не удается запустить тестовый проект». К вашему сведению, первый гид говорит «это тест», второй говорит «это C #». Для получения информации об этих руководствах: http://www.mztools.com/Articles/2008/MZ2008017.aspx

18 голосов
/ 29 февраля 2012

В дополнение к ответу, предоставленному @Justin, есть еще несколько деталей для NUnit 2.6.

С помощью NUnit 2.6 подключайтесь к nunit.exe или nunit-console.exe, а НЕ к агенту. Конфигурация, отмеченная @Justin, немного отличается. Ниже приведен пример из nunit.exe.config (то же самое для nunit-console.exe.config).

<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>

В тестовом проекте .NET 4, чтобы получить точки останова, вы должны будете закомментировать или удалить строку v2.0, как следует из комментария. После этого я смог отладить тестовый проект .NET 4.0.

17 голосов
/ 10 сентября 2012

Если вы используете NUnit 2.4 или новее, вы можете поместить следующий код в класс SetUpFixture. (Вы можете сделать это с более старыми версиями, но вам нужно будет сделать любой эквивалент, который имеет SetUpFixture, или скопировать его в сам тест.)

[SetUpFixture]
public class SetupFixtureClass
{
    [SetUp]
    public void StartTesting()
    {
        System.Diagnostics.Debugger.Launch();
    }
}

То, что делает Debugger.Launch(), вызывает появление следующего диалогового окна при нажатии «Выполнить внутри NUnit».

JIT Debugger Dialog

Затем вы выбираете работающий экземпляр Visual Studio с открытым проектом (2-й на моем скриншоте), затем присоединяется отладчик, и в Visual Studio отображаются все точки останова или исключения.

10 голосов
/ 16 апреля 2017

В Nunit 3.0.1 (я использую VS2013), откройте главное меню> Тест> Windows> Тестовый проводник. Затем в «Тестовом проводнике», щелкните правой кнопкой мыши тестовый пример, вы можете увидеть: enter image description here

Надеюсь, это поможет.

6 голосов
/ 17 апреля 2009

Попробуйте NUnitit - надстройку Visual Studio для отладки тестовых примеров NUnit

Домашняя страница - http://nunitit.codeplex.com/

6 голосов
/ 17 апреля 2009

Установка TestDriven.NET , который является плагином для Visual Studio

Оттуда вы можете щелкнуть правой кнопкой мыши по сборке тестовых модулей и щелкнуть «Запустить тесты», чтобы запустить весь пакет, щелкнуть правой кнопкой мыши класс TestFixture, чтобы запустить только тесты в этом классе, или щелкнуть правой кнопкой мыши метод Test, чтобы запустить только этот тест. способ.

У вас также есть возможность «Тестировать с помощью отладчика», если вам нужно установить точку останова в своих тестах в режиме отладки.

5 голосов
/ 29 октября 2009

Удаление ProjectTypeGuids из файла проекта.

3 голосов
/ 18 октября 2016

Теперь с картинками:

  1. Запустите графический интерфейс NUnit ( Загрузите 2.6.2 отсюда ), затем перейдите к File -> Open Project

enter image description here

  1. Выберите тест .dll из папки bin (C:\......\[SolutionFolder][ProjectFolder]\bin\Debug\xxxxTests.dll)

  2. Перейти к Visual Studio Debug -> Attach to process (откроется окно Присоединить к процессу)

  3. В списке прокрутите вниз и выберите nunit-agent.exe, затем нажмите Attach

enter image description here

  1. В этот момент контрольные точки в ваших тестах должны стать спелыми красными (из пустоты).

  2. Нажмите Run на Nunit Gui, и вы получите удар по точке останова ...

Надеюсь, это сэкономит вам время.

...