Продолжается подписка на наши издания! Вы не забыли подписаться?

Использование NUnit

Авторы: Adventures in C#: Using NUnit
Рон Джеффриес

Перевод: Александра Федоренко
под редакцией Анны Федоренко
Тестирование: основная практика
NUnit
Установка NUnit
В поисках простого паттерна
Парные теги
Парные неизвестные теги
Несоответствующие теги
Что упущено?
Быстрый взгляд на отладку под NUnit
Исполняемая программа для отладки
Подсоединение к процессу NUnit
Выбор техники
Заключение

Тестирование: основная практика

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

Но я здесь не для продажи тестирования, а для разъяснения того, как мы это делаем. Идём дальше.

Поскольку мы работаем с XML Notepad, нам приходится работать с текстовыми строками и разбираться, содержат ли они в себе XML-теги. XML-теги, как вы, вероятно, знаете, состоят из совпадающих пар строк, заключённых в тильдах: <SomeTag> что-то типа того</SomeTag>. В .NET есть мощные средства работы с XML, и далее будет показано применение некоторых из них. Но мы здесь собрались для изучения C#, что подразумевает несколько более глубокое погружение этот вопрос. А учитывая, что C# включает мощную поддержку регулярных выражений, я решил заняться еще и этим.

Часто, когда я экспериментирую с чем-то новым, я просто пишу некоторый набросок кода. Он печатает результаты на консоль. Что-то подсказывает мне поступить так же и в этот раз, при создании тестов с помощью NUnit, среды тестирования для .NET. В результате , как вы увидите, есть c информация вместо чего-то, присутствующего только в моей голове, что, скорее всего, будет забыто. Это ещё и позволит для обучения других, позволяющий делать работу немного легче.

NUnit

В этой статье описывается тестирование с помощью NUnit. Эта среда тестирования написана Джимом Ньюкирком, Михаэлем Ту, Алексеем Воронцовым и Чарли Пуле на основе оригинального NUnit Филипа Крейга. Вы можете найти всё это на сайте sourceforge.net. NUnit – почти то же самое, что и все среды тестирования в экстремальном программировании (xUnits). Но есть два важных отличия.

  1. NUnit использует атрибуты из .NET для идентификации тестов в массе кода. Как вы увидите, тест наборы (test fixtures) определяются с помощью атрибута [TestFixture], а индивидуальные тесты атрибутом [Test]. Это означает, что вы можете писать тесты, не наследуемые жёстко от суперкласса TestCase. NUnit найдёт их всё равно. В начале это казалось мне неоправданным, но потом я заметил, что это работает и мне даже нравится.
  2. NUnit позволяет писать тесты на любом языке .NET. Значит, несмотря на то, что NUnit написан на C#, вы можете писать свои тесты на VisualBasic, C++ или, как я полагаю, даже на ML и Eiffel. Языковая независимость – ключевая особенность .NET, и я считаю ее достаточно важной.

Когда вы пишете тесты с использованием NUnit, можно запустить его пользовательское приложение. После запуска оно выдаст отчёт о ваших тестах. Существует две версии приложения: консольная и GUI-версия. Я предпочитаю GUI-версию и буду использовать её на протяжении всей статьи. Когда я говорю NUnit, то обычно подразумеваю версию с пользовательским интерфейсом (рисунок 1).

После нажатия кнопки Запуск (Run), NUnit просмотрит программу на предмет наличия тестов и запустит их. У каждого тест-набора, определенного в вашей программе, есть установочный и завершающий метод. Поэтому каждый тестовый случай запускается с начальной предустановкой. Это означает, что ваши тесты автоматически независимы, и что NUnit запустит их все. Если тесты выполняются правильно, NUnit высветит зелёным. Если какой-либо тест не пройдёт, цвет сменится на красный.

Команды, использующие Экстремальное программирование, пишут множество тестов. Правило гласит, что кода может быть отправлен в общее хранилище только когда все тесты выполнятся правильно. Это может показаться тяжёлой ношей, но на деле это не так. А теперь представьте, насколько уверенными вы будете в своём коде, когда множество ваших тестов выполнится успешно!

Ну, достаточно голословных высказываний. Давайте посмотрим, как это всё выглядит.

.................

Заключение

Почти весь код в этой статье разрабатывался с использованием соответствующих тестов под NUnit. Надеюсь, что вы увидите, как, работая таким путём, можно минимизировать проблемы и поддерживать код в работоспособном и доступном для усовершенствования состоянии. Если однажды нам придётся работать без тестов (возможно потому, что мы не сможем представить, как написать тест или из-за лени), я уверен, что это приведет к ошибкам в коде.

Это обучающая статья, так что если вы заметили ошибки, то это потому, что мы позволили их увидеть. Оцените, насколько наши ошибки были минимизированы в процессе написания тестов или улучшения их. Моя неоспоримая правота здесь в том, что вы увидели, насколько эффективен подход тестирования до разработки. Это не единственное, что мы изучили, хоть и является основной идеей.

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

Copyright © 1999-2002, Ronald E Jeffries, 
"С полным содержанием данной статьи можно ознакомиться в печатной версии журнала"

Copyright © 1994-2016 ООО "К-Пресс"