Как отладить тест Nunit в Visual Studio 2010

У меня есть проблема с отладкой теста NUnit из VisualStudio. Я создал пустой проект (Console Application), затем добавил ссылки на библиотеку NUnit и написал простой тест.

namespace ReimplementingLinq.Tests
{
    [TestFixture]
    public class WhereTest
    {
        [Test]
        public void SimpleFiltering()
        {
            int[] source = { 1, 2, 3, 4, 2, 8, 1 };
            var result = source.Where(val => val < 4);
            int[] expected = {1,2,3,4};
            CollectionAssert.AreEqual(expected, result);
        }
    }
}

Далее я последовал рекомендациям, приведенным в этой ссылке Как запустить NUnit в режиме отладки из Visual Studio?, но ни одно из решений в этой теме не работает для меня. Ни один из моих контрольных точек не попадает во время выполнения теста. Я попытался проверить решение, присоединившись к этому процессу, а также выполнив проект с помощью внешней программы с аргументами.

Что я могу сделать для отладки моего unit test?

Ответ 1

Предполагая, что вы используете версию Visual Studio, отличную от Express Edition, тогда TestDriven.NET может быть полезным.

После установки

  • Установить контрольную точку в методе тестирования
  • Щелкните правой кнопкой мыши и выберите "Отладчик" в меню "Тестирование с помощью"
  • Отладчик должен запустить и нажать точку останова

К сожалению, вы не можете использовать этот метод с Express-версиями visual studio, потому что TestDriven.NET является плагином для визуальной студии, а выпуски Express не поддерживают использование плагинов

Запуск теста в консольном приложении

Вы также можете запустить тест в отладчике с помощью консольного приложения:

  • Создание нового консольного приложения
  • Ссылка на проект модулей тестирования
  • Внутри основного метода консольного приложения создайте новый экземпляр вашего теста fixuture и затем вызовите один из методов тестирования. Например, если у меня есть приложение с именем MyTests и тест с именем Test1, я бы написал:

    var myTests = new MyTests();
    myTests.Test1();
    
  • Установите точку останова в строке, где вы создаете экземпляр класса MyTests и нажмите F5

  • Отладчик ударит по вашей точке останова, а затем вы можете использовать F11 для входа в ваш конструктор TestFixture или перешагнуть его в сам тест

Ответ 2

Запуск или отладка тестов NUnit непосредственно с помощью Visual Studio

Посмотрите ma 'нет расширений!

Просто настройте тестовый проект, чтобы при нажатии F5 (начать отладку) или Ctrl-F5 (запуск без отладки) он автоматически запустит графический интерфейс NUnit и выполнит все тесты внутри него. Если ударятся какие-либо точки останова, вы также сможете просто отладить ваш тестовый код.

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

Лень - мать всего изобретения: -)

Ответ 3

Если вы используете 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 с открытым проектом (второй в моем скриншоте), тогда отладчик будет подключен, и в Visual Studio будут отображаться любые точки останова или исключения.

Ответ 4

Посмотрите NHarness на CodePlex.

Это очень простая, основанная на отражениях, библиотека тестовых бегунов, которая распознает атрибуты NUnit и может быть запущена из проекта в Visual Studio Express, что позволяет проводить отладочное тестирование.

В настоящее время он имеет степень детализации уровня тестового класса, но вызовы уровня метода, предположительно, скоро будут добавлены.

Ответ 5

Имел ту же проблему с NUnit 2.5.3 и в итоге нашел другое решение. Посмотрите, работает ли это для вас:

Откройте графический интерфейс NUnit и зайдите в диалоговое окно "Настройки" меню "Сервис". В подразделе "Дерево настроек" выберите подраздел "Изоляция изоляции" раздела "Тест-загрузчик". Установите модель процесса по умолчанию для запуска тестов в процессе NUnit.

У меня было настроено на запуск тестов в отдельном отдельном процессе, поэтому отладчик не смог связать мою dll под тестом с символами для его отладки. Я по-прежнему использую Использовать сперва AppDomain в сборку для моего использования по умолчанию.