Чтение онлайн

на главную - закладки

Жанры

Шрифт:

Установка и настройка NUnit

Для начала необходимо загрузить и установить оснастку тестирования NUnit . Затем установить шаблоны проектов тестирования , для этого нужно загрузить архив NUnit Test Templates, скопировать содержимое директории CSharp в директорию \Documents\Visual Studio 2008\Templates\ProjectTemplates\Visual C# (аналогично для директории Visual Basic, если вы используете язык Visual Basic), после чего загрузить данные из REG-файла в реестр для регистрации шаблона NUnit в мастере создания проектов ASP.NET MVC Framework.

Когда вы завершите процедуры установки NUnit и шаблонов

проектов, при создании нового проекта ASP.NET MVC Framework появится возможность создать проект для тестирования с использованием NUnit (рис. 8.1).

После создания проекта вместе с проектом веб-приложения будет создан проект библиотеки классов, являющийся основной сборкой для тестирования веб-приложения, представленный на рис. 8.2.

Рис. 8.2. Проект тестирования веб-приложения

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

Создание и выполнение тестов

Набор простейших тестов, проверяющий корректность работы контроллера Home из шаблона веб-приложения, приведен в листинге 8.1.

Листинг 8.1. Тесты контроллера Ноше

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Web.Mvc;

using NUnit.Framework;

using MvcTestApp;

using MvcTestApp.Controllers;

namespace MvcTestApp.Tests.Tests.Controllers

{

[TestFixture]

public class HomeControllerTest

{

[Test]

public void Index

{

HomeController controller = new HomeController;

ViewResult result = controller.Index as ViewResult;

ViewDataDictionary viewData = result.ViewData;

Assert.AreEqual("Welcome to ASP.NET MVC!",

viewData["Message"]);

}

[Test]

public void About

{

HomeController controller = new HomeController;

ViewResult result = controller.About as ViewResult; Assert.IsNotNull(result);

}

}

}

Тесты представляют собой методы, помеченные атрибутом Test, помещенные в классы, помеченные атрибутом TestFixture. Среда выполнения тестов NUnit находит в сборке с тестами тестирующие методы именно по этим атрибутам.

Структура каждого теста может быть разбита на три основных элемента:

? подготовка данных и объектов для проведения теста;

? выполнение действия, результат которого нужно протестировать;

? проверка результатов выполнения действия.

Рассмотрим тестовый метод Index из листинга 8.1, проверяющий одноименное действие контроллера Home.

Подготовка данных и объектов в этом случае представляет

собой только лишь создание экземпляра класса HomeController.

HomeController controller = new HomeController;

Выполнение действия — вызов метода Index у созданного ранее объекта controller, возвращающего результат типа viewResult.

ViewResult result = controller.Index as ViewResult;

Проверка результата в данном случае заключается в проверке значения, помещенного в коллекцию ViewData с ключом Message с помощью метода класса Assert, используемого для целей отладки и тестирования.

Assert.AreEqual("Welcome to ASP.NET MVC!", viewData["Message"]);

После того как тесты созданы, сборку, содержащую тесты, нужно скомпилировать и загрузить в графическую оболочку NUnit. Оболочка распознает методы, помеченные атрибутами Test, и выводит их в виде дерева тестов, как это показано на рис. 8.3.

Тесты можно выполнять по одному, либо блоками, относящимися к одному классу, содержащему тестирующие методы, либо все тесты сразу (рис. 8.4).

Теперь представим себе, что вследствие развития проекта результат выполнения метода Index изменился, и в коллекцию ViewData с ключом Message помещается другая строка.

public ActionResult Index

{

ViewData["Message"] = "Всем привет!";

return View;

}

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

отображено сообщение об ошибке, включающее детальную информацию, а также фрагмент исходного кода теста, сообщивший о невыполнении условий теста (рис. 8.5).

Как видно из приведенного ранее примера, создание самого теста — задача достаточно простая. Далее будет рассмотрен процесс создания более сложного веб-приложения, требующего написания более сложных тестов.

Несколько слов о важности тестирования

На первый взгляд может показаться, что польза от тестов не велика, если само приложение написано грамотно, модификация кода при развитии приложения происходит под строгим контролем, и выполняется ручное тестирование веб-приложения. Однако такое впечатление складывается только на первый взгляд и для несложных проектов. При автивном внесении изменений в проекты с большим объемом кода автоматическое тестирование позволяет не просто существенно сократить время на проверку корректности внесенных изменений, но и гарантировать совместимость компонентов системы. Кроме того, сам факт создания тестов и разработка архитектуры приложения с учетом тестирования существенно влияет на чистоту кода и архитектуры.

Поделиться:
Популярные книги

Дважды одаренный. Том VIII

Тарс Элиан
8. Дважды одаренный
Фантастика:
боевая фантастика
альтернативная история
аниме
попаданцы
5.00
рейтинг книги
Дважды одаренный. Том VIII

КГБ. Председатели органов госбезопасности. Рассекреченные судьбы

Млечин Леонид Михайлович
Научно-образовательная:
история
6.25
рейтинг книги
КГБ. Председатели органов госбезопасности. Рассекреченные судьбы

Ночной молочник

Курков Андрей Юрьевич
Детективы:
триллеры
6.25
рейтинг книги
Ночной молочник

Я Пилигрим

Хейз Терри
Детективы:
прочие детективы
боевики
7.67
рейтинг книги
Я Пилигрим

По светлому следу (сборник)

Томан Николай Владимирович
Детективы:
шпионские детективы
7.50
рейтинг книги
По светлому следу (сборник)

Цеховик. Книга 1. Отрицание

Ромов Дмитрий
1. Цеховик
Фантастика:
попаданцы
альтернативная история
5.75
рейтинг книги
Цеховик. Книга 1. Отрицание

Мстители. Дилогия

Сандерсон Брендон
Мстители
Фантастика:
социально-философская фантастика
научная фантастика
боевая фантастика
постапокалипсис
8.09
рейтинг книги
Мстители. Дилогия

Астроном

Шехтер Яков
Проза:
современная проза
5.00
рейтинг книги
Астроном

Мир приключений 1967 г. №13

Булычев Кир
Альманах "Мир приключений"
Фантастика:
научная фантастика
5.00
рейтинг книги
Мир приключений 1967 г. №13

"Дальние горизонты. Дух". Компиляция. Книги 1-25

Усманов Хайдарали
Собрание сочинений
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Дальние горизонты. Дух. Компиляция. Книги 1-25

Эволюционер из трущоб. Том 10

Панарин Антон
10. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эволюционер из трущоб. Том 10

Я царь. Книга XXVIII

Дрейк Сириус
28. Дорогой барон!
Фантастика:
боевая фантастика
аниме
попаданцы
5.60
рейтинг книги
Я царь. Книга XXVIII

Хроноагент

Добряков Владимир Александрович
1. Хроноагент
Фантастика:
боевая фантастика
6.81
рейтинг книги
Хроноагент

История Древнего мира. От истоков Цивилизации до падения Рима

Бауэр Сьюзен Уайс
Страницы истории
Научно-образовательная:
история
5.00
рейтинг книги
История Древнего мира. От истоков Цивилизации до падения Рима