Як запустити NUnit в режимі налагодження з Visual Studio?


120

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

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

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 в GUI 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 #, і тоді інструкції з моєї вибраної відповіді спрацюють.


Ваш клас тестового кріплення мені добре виглядає, тому він повинен бути чимось у проекті, як ви запропонували.
Патрік Макдональд

2
Подивіться на таке запитання: stackoverflow.com/questions/247900/… Відповідь та сама ...
Патрік Дежардінс

Відповіді:


46

Я використовую ту саму техніку, що і ви намагаєтесь з Джоном, без прапора / montage, тобто

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?

Оскільки мій тестовий проект не є проектом запуску в рішенні, я запускаю свої тести, клацнувши правою кнопкою миші на тестовому проекті та вибравши налагодження -> Запустити новий екземпляр


1
Я спробував те, що ви запропонували (видалення / збірку), але це не має ніякого значення. Коли я запускаю новий екземпляр, він видає помилку. Я думаю, що це здебільшого пов'язане з тим, що коли я створив проект TestDSP, я створив його з вбудованого шаблону тестового проекту VisualStudio, щоб він шукав неправильну рамку тестування.
Джон Кейдж

3
Врешті-решт спрацював. Я мав рацію в тому, що саме зупиняли його варіанти проектів - заново створили тестовий проект за допомогою шаблону стандартного класу, який вирішив проблему.
Джон Кейдж

1
Це допоможе, якщо ви також додасте /runдо своїх аргументів * Командний рядок, які автоматично почнуть виконувати тести ... Я також підсумував це все (використовуючи зображення) у своєму дописі в блозі .
Роберт Коритник

6
Якщо люди не перевіряють (дуже корисну) публікацію в блозі Роберта ( erraticdev.blogspot.com/2012/01/… ): для .NET 4.0 та новіших версій, я вважаю, що ви також повинні додати це до nunit.exe.config : <startup> <supportRuntime version = "4.0" /> </startup>.
devuxer

3
Подальше повідомлення: У пізніших версіях NUnit (остання версія на сьогодні - v2.6.1) вам потрібно прокоментувати коментарі <supportedRuntime version="v2.0.50727" />у nunit.exe.config.
devuxer

102

Коли мені потрібно налагодити свої тести NUnit, я просто вкладусь у додаток NUnit GUI nunit-agent.exeза допомогою "Налагодження | Приєднати до процесу" та запускаю тести з графічного інтерфейсу. Будь-які точки перерви в моїх тестах (або код, який вони перевіряють) потрапляють. Я нерозумію ваше запитання, чи це допоможе вам?


7
Для вашої (та інших) інформації: налагодження | вкладення недоступне у експрес-виданнях VS.
Річард

15
Зауважте, що вам потрібно вибрати "Увімкнути підтримку візуальної студії" у діалоговому вікні "Налаштування" NUnit -> Підтримка IDE
Julio Garcia,

8
Для .NET 4.0 і пізніших, я вважаю , ви також повинні додати це nunit.exe.config: <startup> <supportedRuntime version="4.0" /> </startup>.
devuxer

1
Це швидкий ярлик для приєднання до правильного процесу (запустіть у консолі диспетчера пакунків): ($ dte.Debugger.LocalProcess |? {$ _. Name.EndsWith ("nunit-agent.exe")}). Attach ()
барт

7
FYI: вам потрібно приєднати налагодження до процесу, який називається "nunit-agent.exe", а НЕ "nunit.exe". Інакше ваші точки прориву ігноруються, і вам цікаво, чому ...
Дженні О'Рейлі

21

Просто видаліть лінію, що має вигляд

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

з файлу вашого проекту. Цей рядок в основному повідомляє VS.Net, що це тестовий проект, таким чином "Неможливо розпочати тестовий проект". FYI тут 1-й керівник каже "це тест", 2-й каже "це C #". Для отримання інформації про ці Посібники: http://www.mztools.com/Articles/2008/MZ2008017.aspx


18

Окрім відповіді, наданої @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.


Я мав успіх лише з v2.0.50727рядком при налагодженні .NET 2 збірок з VS2005 з nunit. ( v4Лінія завадила приєднати налагоджувач VS 2005.)
Мартін Ба

17

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

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

Що Debugger.Launch()викликає появу наступного діалогового вікна при натисканні кнопки Виконати всередині NUnit.

Діалог налагодження JIT

Потім ви вибираєте свій запущений екземпляр візуальної студії з відкритим проектом (другий на моєму екрані), тоді налагоджувач буде доданий, а будь-які точки перерви або винятки з’являться у Visual Studio.


12

У Nunit 3.0.1 (я використовую VS2013) відкрийте в головному меню> Тест> Windows> Тест-провідник. Потім у "Тестовому досліднику" правою кнопкою миші клацніть тестовий випадок, ви можете побачити: введіть тут опис зображення

Сподіваюся, це допомагає.


2
Дякую за цю відповідь. Набагато простіше, ніж усі інші.
Дано

Я використовую NUnit 2.5.9 в VS 2015, і він працював з розширенням VS, названим як "Тестовий адаптер NUnit 2". Ви можете виконати тест у вікні Test Explorer.
mggSoft

6

Встановіть TestDriven.NET , який є плагіном для Visual Studio

Звідти ви можете клацнути правою кнопкою миші на вашій тестовій збірці і натиснути «Запустити тести», щоб запустити весь набір, клацніть правою клавішею на клас TestFixture, щоб запустити лише тести цього класу, або клацніть правою кнопкою миші на методі тестування, щоб запустити саме цей метод.

Ви також маєте можливість тестувати налагоджувачем, якщо вам потрібно перебити точку на свої тести в режимі налагодження.


2
170 доларів смішно круті за такий інструмент. Зниження цін, будь-хто?
Бен Харді

Так. Для таких грошей я б краще вклав гроші в JetBrains Resharper, який потім безкоштовно надає Test Runner із інтеграцією налагодження та купою інших функцій продуктивності.
Роман

За допомогою Visual Studio 2012 ви можете отримати тест-біг NUnit з Nuget безкоштовно.
Джон Лім’яп

6

Спробуйте NUnitit - Visual Studio Addin з відкритим кодом для налагодження тестів NUnit

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


Це досить добре, хоча я не можу знайти спосіб сказати, щоб просто провести єдиний тест (?)
Джон Кейдж,


3

Тепер із фотографіями:

  1. Запустіть NUnit gui ( Завантажте 2.6.2 звідси ), потім перейдіть доFile -> Open Project

введіть тут опис зображення

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

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

  3. У списку прокрутіть униз і виберіть, nunit-agent.exeа потім натисніть кнопкуAttach

введіть тут опис зображення

  1. У цей момент точки проби у ваших тестах повинні стати стиглими червоними (з порожніх).

  2. Клацніть Runна, Nunit Guiі ви повинні отримати ударну точку ...

Сподіваюсь, це заощадить певний час.


2

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

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

2

Якщо шлях до проекту містить пробіли, наприклад, "Новий проект" у шляху <path>\bin\Debug\New Project\Quotes.Domain.Tests.dll тоді додайте в подвійні лапки шлях "Параметр запуску -> Аргументи командного рядка".

Я витратив багато часу, щоб розібратися в цьому.


1

Щодо того, що сказав містер Патрік Макдональд

Оскільки мій тестовий проект не є проектом запуску в рішенні, я запускаю свої тести, клацнувши правою кнопкою миші на тестовому проекті та вибравши налагодження -> Запустити новий екземпляр

Я спробував подати заявку в свою бібліотеку тестових класів, але отримав деяку помилку щодо шляху, тому спробував видалити «Аргументи командного рядка», і на щастя, він спрацював добре і як очікувалося.


0

Це здається, що ви намагаєтеся використовувати неправильну бібліотеку. NUnit може запускатися, лише якщо dll, який ви використовуєте, містить TestFixtures.

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


Дивіться нещодавню редакцію - у мене є тестове кріплення, хоча цілком можливо, я його не встановив правильно.
Джон Кейдж

0

У мене така ж помилка з MSTest. Я виявив, що у вікні тестових результатів деякі тести мали дублікати ідентифікаторів і їх не можна було завантажити. Я видалив усі повторювані тести, і тепер я міг запустити тести, коли я запускав проект.


0

Зараз є також розширення "Visual NUnit", яке дозволить вам запускати тести всередині Visual Studio, як і вбудовані тестові рамки. Перевірте це у менеджері розширень.


0

Відкрийте Visual Studio ---> ваш проект ---> Виберіть "Властивості" ---> Виберіть "Налагодження" -> Виберіть "Запустити зовнішню програму" і встановіть шлях вашого NUnit туди (Напр., Запустіть зовнішню програму = C : \ Програмні файли \ NUnit 2.6.2 \ bin \ nunit.exe) ----> Зберегти

Після цього просто натисніть налагодити


0

Для мене рішенням було адаптувати файл конфігурації nunit. Щоб використовувати nunit з 4.5-.Net Framework та опцією збірки x64, мені довелося додати один рядок до тегу запуску (підтримується версія виконання).

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

Після цього я міг почати правою кнопкою миші на налагоджувальній програмі Testproject -> Запустити новий екземпляр. Перед цим мені потрібно було знову вручну долучити проект до процесу.

Мої властивості налагодження були: C: \ Program Files (x86) \ NUnit 2.6.4 \ bin \ nunit.exe з аргументом місця розташування .dll, який потрібно перевірити.

Більше інформації: nunit для тестування з .NET 4.0


-1

Подивіться, чи це допомагає .. Як додати NUnit у Visual Studio

(RighteousRant) Хоча особисто мені не подобається такий підхід. Якщо вам потрібен налагоджувач під час тестового керування кодом, це "запах" у тому, що у вас недостатньо впевненості / знаєте, як працює ваш код і потрібен відладчик, щоб сказати вам це. TDD повинен позбавити вас від необхідності налагодження, якщо виконано правильно. Використовуйте "Приєднати налагоджувач до NUNit" лише в рідкісних випадках або коли ви переходите до чужого коду.


Я спробував там пропозиції безрезультатно. У вас явно хороший ніс. Я знаю, що мій код не працює, оскільки вихід, який я отримую для першого блоку реалізації, отримує дивовижні відповіді на мою тестову посилання. Тому зараз я намагаюся заглибитись глибше, щоб знайти причину проблеми. Я вважаю за краще робити це ізольовано від решти програми (звідси необхідність запускати одиничні тести в режимі налагодження). Для запису, це код, який написав хтось інший, який був перетворений з алгоритму іншої особи: - /
Джон Кейдж

Отже, це потрапляє в останню статтю мого останнього рядка :) Дивно, що ви не можете змусити його працювати, хоча .. шкода. Я б сказав, просто приєднайтеся до процесу (Alt + D + P), не зупиняючись на ньому ..
Gishu

Тут немає запаху - у мене є тестовий випадок, який виходить з ладу в певних умовах (повертається дуже неправильний результат), і мені потрібно з’ясувати, чому. Для цього я хочу налагодити його та дізнатись, де його збій у цьому середовищі, щоб я міг виправити код і зробити тест пройти скрізь. Це здається, що стандартний тип червоного / зеленого кольору ...
BrainSlugs83

@ BrainSlugs83 - давно, як я це написав. Я (досі) проти налагодження ваших тестів як основної трудової практики. Корпуси кромки - я добре з переходом до налагоджувача. Навіть тоді я, мабуть, спочатку вставив реєстрацію stmts .. Я думаю, що це випливає з того, що я спостерігав занадто багато людей, що використовують цикл Code-Crash-Debug-Adjust, який впорядковується до циклу Code-Crash-Adjust за допомогою налагоджувача безперервно на.
Gishu
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.