Как лучше всего отлаживать тест NUnit?

Моя платформа: Visual C# 2008 Express Edition с NUnit 2.2.7

У меня есть решение с моим кодом в одном проекте и моими модульными тестами NUnit в другом проекте в том же решении.

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

NUnit.ConsoleRunner.Runner.Main(args);

Но это даже не компилируется - есть ошибка компилятора:

Error 1 The type or namespace name 'Runner' does not exist in the namespace 'NUnit.ConsoleRunner' (are you missing an assembly reference?)

Я добавил все ссылки на сборку, которые смог найти, но безрезультатно.

Наконец, это то, что я собрал вместе, и это работает, но, возможно, вы, хорошие читатели, могли бы предложить лучшее решение:

1) В моем тестовом проекте имя класса тестового примера, который я хочу отлаживать, - MyTestClass. Он имеет метод [TestFixtureSetUp] с именем Init (), а фактический тестовый пример находится в функции [Test] MyTest ().

2) В моем проекте кода у меня есть консольная программа TestProgram.cs, которая компилируется в EXE.

В TestProgram.cs я вызываю тестовые примеры следующим образом

// First instantiate the test class
MyTestClass tc = new MyTestClass();

// Call the TestFixtureSetup method
tc.Init();

// Now call the actual test
tc.MyTest();

Это работает, и я могу выполнять отладку и выполнять отдельные этапы тестирования.

Если у кого-то есть лучшие предложения по использованию Visual Studio 2008 Express без оплаты дополнительных плагинов, я ценю ваш совет.

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

Gishu 08.11.2008 16:16
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
12
1
5 127
6

Ответы 6

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

Поскольку вы используете экспресс-версию Visual Studio, вы не можете использовать бесплатную надстройку TestDriven.NET. Это прискорбно, потому что это действительно лучший инструмент, который я использовал для отладки модульных тестов.

Класс Runner можно найти в сборке nunit-console-runner.dll, поэтому обязательно добавьте ссылку на него. Я не уверен, что он делает что-то, чего нет в вашей простой точке входа, но, вероятно, лучше всего использовать его в целях безопасности и для будущей совместимости.

Еще один (грязный) вариант, о котором стоит упомянуть, - это запуск вашего модульного теста Debugger.Attach(). Я не пробовал это с экспресс-установкой, но вам должно быть предложено подключить отладчик при запуске модульного теста. Затем вы можете выбрать существующий экземпляр VS и отладить его.

Вы использовали средство запуска тестов ReSharper? Я считаю, что это намного лучше, чем TestDriven.NET - хотя, конечно, это не бесплатно.

Jon Skeet 08.11.2008 14:17

Привет, Джон, да, я согласен, это хороший бегун. Однако я не являюсь поклонником ReSharper из-за его требований к ресурсам. Я пробовал это в течение значительного периода времени (> 3 месяцев) и обнаружил, что это причиняет мне много боли.

Kent Boogaart 08.11.2008 14:20

I found some references online that suggested calling the following: NUnit.ConsoleRunner.Runner.Main(args); But this doesn't even compile - it has the compiler error:

JFYI Вам нужно добавить ссылку .NET DLL на сборку монахиня-консольный бегун в пакете NUnit DLL (у меня 2.2.4.0) Похоже, что класс тоже был переименован, но он есть, если вам это нужно.

NUnit.ConsoleRunner.ConsoleUi.Main(args);

Джон как хороший способ, но не более автоматический;)

Вот что у меня уже говорят на ТАК:

Вы можете создать пустой проект (например, выбрать консольное приложение) и в свойстве проекта выбрать тег DEBUG и выбрать Start External Program. Ставьте путь Нунит. Затем в опции запуска аргументы командной строки выбирают DLL, которая содержит весь ваш тест (мой всегда находится в nunit \ bin ...). Затем выберите Enable unmanaged code debugging, и вы сможете запустить проект внутри VS и даже пошагово использовать отладчик.

Таким образом, вам не понадобится макрос или что-либо, что нужно делать каждый раз, это просто обычный F5 :)

Вам вообще нужен отдельный проект? Разве вы не можете просто установить эти параметры в своем проекте модульного тестирования?

Kent Boogaart 09.11.2008 00:36

Кент прав. (Если, конечно, Express Edition не позволяет запускать внешнюю программу при нажатии F5)

Pedro 04.01.2009 08:46

В Visual C# 2010 Express нельзя использовать «Запуск внешней программы». Из msdn.microsoft.com/en-us/library/68c8335t.aspx «Выпуски Express, такие как Microsoft Visual C# Express, не поддерживают изменение свойства StartAction; это поддерживается только в полной версии продукта Visual Studio».

Zach Burlingame 24.05.2010 04:28

Взгляните на http://nunit.com/blogs/?p=28

Это работает.

Спасибо BlackWasp. Эта ссылка решает проблему с платными выпусками, имеющими опцию «Начать внешнюю программу», а в экспресс-выпусках - нет.

Zach Burlingame 24.05.2010 04:31

кто-нибудь может восстановить эту веб-страницу? Я бы очень хотел прочитать это, но URL-адрес стал недействительным ...

mtijn 21.12.2011 14:08

Если у вас установлен ReSharper, он должен уметь обнаруживать ваши [Test] фикстуры и помещать значок слева от каждого метода, который нужно запустить, и слева от каждого тестового инструмента, чтобы запустить все. Я предпочитаю этот способ.

У большинства людей на работе также есть TestDriven.NET, которого по какой-то причине нет на моей машине, поэтому им интересно, что происходит. Это забавно.

Другие вопросы по теме