Как отладить тест Nunit в Visual Studio 2010 - PullRequest
20 голосов
/ 24 июля 2011

У меня проблема с отладкой теста NUnit из VisualStudio.Я создал пустой проект (консольное приложение), затем добавил ссылки на библиотеку 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? , но ни одно из решений в этой теме не работает для меня.Ни одна из моих контрольных точек не была достигнута при выполнении теста.Я попытался протестировать решение, подключившись к процессу, а также запустив проект с внешней программой с аргументами.

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

Ответы [ 5 ]

41 голосов
/ 11 января 2012

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

Look ma 'без расширений!

Просто настройте ваш тестовый проект так, чтобы при нажатии F5 (Начать отладку) или Ctrl-F5 (Запуск без отладки) он автоматически запускал NUnit GUI и выполнял все тесты в пределах Это. В случае попадания в точки останова вы также сможете просто отладить свой тестовый код.

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

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

13 голосов
/ 24 июля 2011

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

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

  1. Установите точку останова в методе теста
  2. Щелкните правой кнопкой мыши и выберите «Отладчик» из меню «Тест с»
  3. Отладчик должен запуститься и достигнуть точки останова

К сожалению, вы не можетеЭтот метод нельзя использовать в выпусках Visual Studio Express, поскольку TestDriven.NET является плагином для Visual Studio, а выпуски Express не поддерживают использование плагинов

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

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

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

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

  5. Отладчик достигнет вашей точки останова, а затем вы можете использовать F11, чтобы войти в конструктор вашей TestFixture, или перешагнуть через него в сам тест
5 голосов
/ 10 сентября 2012

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

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

Что Debugger.Launch() делает, это вызывает следующее диалоговое окно, когда вы нажимаете Run внутри NUnit.

JIT Debugger Dialog

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

0 голосов
/ 09 марта 2012

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

Откройте графический интерфейс NUnit и войдите в меню «Настройки» меню «Инструменты».Выберите подраздел «Изоляция сборки» раздела «Загрузчик тестов» в дереве настроек.Установите для модели процесса по умолчанию запуск тестов в процессе NUnit.

Я установил запуск тестов в одном отдельном процессе, поэтому отладчик не смог связать мою тестируемую DLL с символами для отладки.Это.Я все еще использую Использовать отдельный домен приложения для каждой сборки для использования моего домена по умолчанию.

0 голосов
/ 03 декабря 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...