Создание проекта для юнит-тестов

Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core

Последнее обновление: 31.10.2015

Посмотрим на примере, как создавать юнит-тесты. По умолчанию при создании проекта в любой версии Visual Studio 2013 для создаваемого проекта веб-приложения нам уже предлагается включить дополнительный проект с тестами с помощью опции Add unit tests:

Создание проекта тестов в Visual Studio

Отметим данный флажок и создадим новый проект.

Если вдруг нам надо добавить тесты к уже существующему проекту, то мы можем добавить в решение новый тип проекта Unit Test Project. Как правило, для проекта тестов название выбирается по следующей схеме [название_главного_проекта].Tests:

Добавление тестов к проекту в Visual Studio

При одновременном создании обоих проектов по умолчанию тестовый проект уже содержит ряд тестов:

Юнит-тесты в Visual Studio

В частности для контроллера HomeController в проекте тестов будет создан класс HomeControllerTest:

[TestClass]
public class HomeControllerTest
{
    [TestMethod]
    public void Index()
    {
        // Arrange
        HomeController controller = new HomeController();

        // Act
        ViewResult result = controller.Index() as ViewResult;

        // Assert
        Assert.IsNotNull(result);
    }

    [TestMethod]
    public void About()
    {
        // Arrange
        HomeController controller = new HomeController();

        // Act
        ViewResult result = controller.About() as ViewResult;

        // Assert
        Assert.AreEqual("Your application description page.", result.ViewBag.Message);
    }

    [TestMethod]
    public void Contact()
    {
        // Arrange
        HomeController controller = new HomeController();

        // Act
        ViewResult result = controller.Contact() as ViewResult;

        // Assert
        Assert.IsNotNull(result);
    }
}

Класс тестов имеет атрибут [TestClass], а каждый метод, проводящий тестирование, - атрибут [TestMethod].

Каждый метод содержит три логических части - Arrange, Act и Assert. Они помечены соответствующими комментариями. Вкратце рассмотрим, что они делают.

Секция Arrange выполняет начальную инициализацию контекста тестов, а именно создает объект контроллера: HomeController controller = new HomeController()

Далее в секции Act выполняет само действие, которое надо протестировать, а именно генерация представления: ViewResult result = controller.Index() as ViewResult. Так как метод Index контроллера возвращает объект ActionResult, то его еще надо привести к объекту ViewResult.

Чтобы проверить на выполнение предыдущее действие, в секции Assert вызывается метод Assert.IsNotNull(result). Этот метод проверяет, был ли сгенерирован объект представления в предыдущей секции. Класс Assert еще имеет ряд методов, которые позволяют верифицировать результат.

Модель тестов Arrange-Act-Assert представляет просто особенность тестирования в Visual Studio, а целую парадигму тестирования:

  • Arrange: подготовка среды, в которой выполняется код

  • Act: тестирование кода (обычно представляет одну строку кода)

  • Assert: убеждаемся, что результат теста именно тот, что мы и ожидали

Этот простейший стандартный тест не охватывает всех возможных ошибок, например, были ли сгенерировано нужное представление. Он просто призван дать начальное понимание работы тестов.

Теперь запустим тест на выполнение. Для этого перейдем в окно Test Explorer и нажмем в нем на кнопку Run All:

Test Explorer в Visual Studio

Если оно по умолчанию не открыто, запустить тесты можно через меню Test->Run->All Tests:

Если все нормально, то обозреватель тестов сигнализирует нам зеленым цветом, что все тесты успешно пройдены:

Теперь создадим собственные тесты.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850