Статьи

Модульное тестирование лаконично: инструменты модульного тестирования

Это отрывок из электронной книги «Единичное тестирование » Марка Клифтона, любезно предоставленный Syncfusion.

Изначально NUnit был перенесен из JUnit в качестве механизма модульных тестов с открытым исходным кодом, предоставляющего богатый набор атрибутов тестовых устройств, методов и переменных, а также проверочных утверждений. Документацию по всем версиям NUnit можно найти здесь . NUnit все еще поддерживается. Последний стабильный выпуск на момент написания этой статьи – версия 2.6.2, выпущенная 22 октября 2012 года.


CSUnit – это лёгкий модуль для тестирования юнитов. Обратите внимание, что он, похоже, не поддерживается, поскольку последний выпуск был в марте 2009 года. Он предлагает минимальный, но функциональный набор атрибутов, которые можно использовать для определения тестовых приборов и методов тестирования.


Visual Studio предоставляет возможность создавать тестовые проекты непосредственно в IDE. Одна из проблем, обнаруженных автором, заключается в том, что пользовательский интерфейс изменился между VS 2008 и VS 2012:

Интерфейс результатов теста VS2008
Интерфейс результатов теста VS2008

В VS2008 тестовый прогон выполняется очень быстро и отображает легко читаемый список результатов теста, а для неудачных тестов – сообщение об ошибке, содержащее информацию о том, почему тест не прошел.

Кроме того, когда тестовый проект является активным проектом, выполнение тестов (или их отладка) выполняется так же, как и в любом другом приложении – их можно запустить с помощью Ctrl + F5 (запуск) или F5 (отладка).

Интерфейс результатов теста VS2012
Интерфейс результатов теста VS2012

В VS2012 тестователю требуется несколько секунд для инициализации. Хуже того, сообщения, связанные с результатом теста, получаются нажатием на ошибку. Требование к дополнительному клику – это серьезная проблема с удобством использования. Из-за изменений в отображении сбоев Visual Studio 2008 использовался для снимков экрана в этой книге.

Наконец, бегущий тест больше не запускается с помощью тех же клавиш быстрого доступа, что и обычное приложение. Вместо этого разработчик должен использовать Ctrl + R, A для запуска тестов. Для отладки юнит-тестов нет сочетания клавиш.

Microsoft предоставляет инструменты интеграции для NUnit для Visual Studio 2010 ( http://visualstudiogallery.msdn.microsoft.com/c8164c71-0836-4471-80ce-633383031099 ) и 2012 ( http://visualstudiogallery.msdn.microsoft.com/6ab922d0 -21c0-4f06-ab5f-4ecd1fe7175d ), хотя на момент написания этой статьи тестовый адаптер NUnit для Visual Studio 2012 был бета-версией 3-2.


Есть несколько других тестовых движков, которые стоит упомянуть здесь.

MSTest ( http://msdn.microsoft.com/en-us/library/ms182489 – версия командной строки для тестового теста Microsoft).

MbUnit и Gallio тесно связаны. Gallio – это платформа автоматизации тестирования, позволяющая интегрировать различные тестовые среды и инструменты отчетности. Это сложный инструмент, который стоит изучить, когда вы ознакомитесь с принципами модульного тестирования и другими движками.

Microsoft Test Manager – это инструмент для планирования, управления и выполнения тестов вручную или автоматически. Microsoft Test Manager интегрируется с отслеживанием ошибок, позволяет писать заметки, связанные с вашими тестами, и позволяет настраивать виртуальные лабораторные машины, которые могут быть сброшены в известное состояние до запуска тестов.

FsUnit – это тестовый движок, который облегчает работу с языком F #.


Модульное тестирование предназначено для проверки правильности единиц вычислительного кода. Интеграционное тестирование предназначено для проверки поведения пользовательского интерфейса.

Для читателей, знакомых с Ruby, NBehave является ранним прототипом функций, похожих на Cucumber, в котором пишутся поведенческие тесты. Например, тесты написаны на естественном языке (оба эти примера взяты с веб-сайта GitHub NBehave ):

1
2
3
4
Scenario: Login
Given I am not logged in
When I log in as Morgan with a password SecretPassw0rd
Then I should see a message, “Welcome, Morgan!”

и методы реализуют фразы (которые, конечно, могут быть использованы повторно):

1
2
3
4
5
[Given(“I am not logged in”)]
public void LogOut()
{
  .
}

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