Как запустить NUnit в режиме отладки из Visual Studio?



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



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



Start external program: C:Program FilesNUnit 2.4.8binnunit-console.exe
Command line arguments: /assembly: <full-path-to-solution>TestDSPbinDebugTestDSP.dll


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



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


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



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



Edit: для тех, кто спрашивает о тестовых светильниках, один из моих .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#, а затем инструкции в моем выбранном ответе будут работать.

1254   19  

19 ответов:

Я использую ту же технику, что и вы пытаетесь 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?

поскольку мой тестовый проект не является стартовым проектом в решении, я запускаю свои тесты, щелкнув правой кнопкой мыши на тестовом проекте и выбрав Debug --> Start New Instance

когда мне нужно отладить мои тесты NUnit, я просто прикрепляю к приложению NUnit GUI nunit-agent.exe с помощью "Debug / Attach to Process"и запустить тесты из графического интерфейса. Любые точки останова в моих тестах (или код, который они тестируют) поражены. Я неправильно понял ваш вопрос, или это сработает для вас?

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

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

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

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

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

<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, как предлагает комментарий. Однажды я это сделал что я был в состоянии отладки .Чистый тестовый проект 4.0.

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

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

что Debugger.Launch() does вызывает следующее диалоговое окно, чтобы показать, когда вы нажимаете кнопку Запустить внутри NUnit.

JIT Debugger Dialog

затем вы выбираете запущенный экземпляр visual studio с помощью ваш проект открыт (второй на моем скриншоте), затем отладчик будет прикреплен, и любые точки останова или исключения появятся в Visual Studio.

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

надеюсь, что это помогает.

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

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

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

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

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

удалить ProjectTypeGuids из файла проекта.

Если вы можете заставить консоль / или графический интерфейс работать, но ваши точки останова не попадают, это может быть связано с тем, что ваше приложение работает в другой среде выполнения .NET, чем NUnit. Проверьте, если ваш nunit-консоль.исполняемый.config / nunit.исполняемый.в конфигурации указано время выполнения.(Конфигурации живут в том же каталоге, что и NUnit exe.) укажите время выполнения с помощью узла запуска:

<configuration>
    <startup>
       <supportedRuntime version="4.0" />
    </startup>

Если путь проекта содержит пробелы, например, "новый проект" в path <path>\bin\Debug\New Project\Quotes.Domain.Tests.dll затем заключите параметр Start -- > аргументы командной строки путь к проекту в двойные кавычки.

Я потратил много времени, чтобы выяснить это.

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

  1. запустите NUnit gui (скачать 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 on Nunit Gui и вы должны получить свою точку останова хит...

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

относительно чего Г-н Патрик Макдональд сказал

поскольку мой тестовый проект не является стартовым проектом в решении, я запускаю свои тесты, щелкнув правой кнопкой мыши на тестовом проекте и выбрав Debug --> Start New Instance

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

похоже, что вы пытаетесь использовать неправильную библиотеку. NUnit может запускаться только в том случае, если используемая dll содержит TestFixtures.

+1 вкл TestDriven.Net у меня была возможность использовать его несколько раз. Вы можете скачать личную версию для целей оценки в соответствии с лицензией по адресу http://testdriven.net/purchase_licenses.aspx.

Я получил ту же ошибку с MSTest. Я нашел это в Результат Теста окно, некоторые тесты имели повторяющиеся идентификаторы и не могут быть загружены. Я удалил все дубликаты тестов, и теперь я был в состоянии запустить тесты, когда я начинаю проект.

теперь есть также расширение "Visual NUnit", которое позволит вам запускать тесты из Visual studio так же, как сборка в дескрипторах тестовой платформы. Проверьте его в диспетчере расширений.

откройте Visual Studio - - - > ваш проект - - - > выберите "Свойства" - - - > выберите "отладка" - > выберите "Запустить внешнюю программу" и установите путь вашего NUnit там(например: запустить внешнюю программу = C:\Program файлы\NUnit 2.6.2\bin\nunit.exe) - - - - > Save

после установки этого просто нажмите кнопку "отладка"

для меня решение состояло в том, чтобы адаптировать файл конфигурации nunit. Чтобы использовать nunit с 4.5-.Net framework и x64 build option, мне пришлось добавить одну строку в тег запуска (поддерживаемая runtime-версия).

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

после этого я мог бы начать, щелкнув правой кнопкой мыши на Testproject Debug - > Start new instance. Раньше мне нужно было снова вручную прикрепить проект к процессу.

мои свойства отладки были, C:\Program файлы (x86)\NUnit 2.6.4\bin\nunit.исполняемый с аргументом местоположения из.dll для тестирования.

дополнительная информация: nunit для тестирования с .NET 4.0

посмотрим, поможет ли это.. Как добавить NUnit в Visual Studio

(праведный)хотя лично мне такой подход не нравится.. Если вам нужен отладчик, пока вы тестируете свой код, это" запах " в том, что у вас недостаточно уверенности/знаете, как работает ваш код, и вам нужен отладчик, чтобы сказать вам об этом. TDD должен освободить вас от необходимости отладчика, если все сделано правильно. Используйте "прикрепить отладчик к NUNit" только в редких случаях или когда вы пробираетесь в кого-то еще один код.

Comments

    Ничего не найдено.