Спонсор: Microsoft
Опубликован: 15.01.2013 | Доступ: свободный | Студентов: 1231 / 229 | Длительность: 08:58:00
Специальности: Программист
Самостоятельная работа 10:

Модульное тестирование

Аннотация: Цель лабораторной работы: >Получить практические навыки модульного тестирования кода программных компонентов.

Продолжительность лабораторной работы - 2 академических часа.

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

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

Для реализации модульного тестирования разрабатываемого приложения создадим тестовый проект модульного тестирования. Для этого добавим в решение ProjectTeachingLoadOfTeachers проект модульного теста ( рис. 18.1), выбрав последовательно ссылку Тест (1), шаблон Проект модульного теста (2) и введя имя проекта UnitTestProjectTeachersLoad (3).

Создание проекта модульного теста

увеличить изображение
Рис. 18.1. Создание проекта модульного теста

Создание теста

При создании проекта модульного теста генерируется класс для тестирования UnitTest, который переименуем, задав имя UnitTestGroup.

{
    [TestClass]
    public class UnitTestGroup
    {
        [TestMethod]
        public void TestMethodGroup()
        {
            // Код теста
  }
    }
}
    

Предположим, что предполагается тестирование уровня представления для задачи Ввод, редактирование и удаление данных по студенческим группам.

Подготовим код теста.

[TestClass]
    public class UnitTestGroup
    {
        [TestMethod]
        public void TestMethodGroup()
        {
              // Completion flag
            bool completed = false;
            // Handle error
            viewModel.ErrorNotice += (s, ea) => Assert.Fail(ea.Data.Message);
            // Handle property change
            viewModel.PropertyChanged += (s, ea) =>
            {
                if (ea.PropertyName == "Employees"
                    && viewModel.Gpoups != null) completed = true;
            };
            // Call ViewModel method
            EnqueueCallback(() => viewModel.Load Gpoups());
            // Wait for completion with timeout
            int timeoutSeconds = 10; // Debugging: Timeout.Infinite
            this.EnqueueConditional(() => completed, timeoutSeconds);
            // Perform Asserts
            EnqueueCallback(() =>
                {
                    Assert.IsNotNull(viewModel.Gpoups);
                });
            // Complete test
            EnqueueTestComplete();
        }
    }
}
    

Результаты тестирования формируются классом Assert, который производит сравнение ожидаемых результатов с фактическими.

После построения тестового проекта созданный тест будет отображаться в обозревателе тестов ( рис. 18.2).

Невыполненный тест в обозревателе тестов

Рис. 18.2. Невыполненный тест в обозревателе тестов

При выполнении теста в обозревателе тестов отображаются параметры его выполнения ( рис. 18.3).

Выполненный тест в обозревателе тестов

Рис. 18.3. Выполненный тест в обозревателе тестов

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

  • каждый тест должен проверять небольшой срез функциональности;
  • тесты должны быть автономными и изолированными;
  • тестировать следует как ожидаемые, так и ошибочные ситуации.

Задание

  1. Изучить теоретический материал.
  2. По задания преподавателя провести модульное тестирование классов приложения.
Мария Морозова
Мария Морозова

Здравствуйте!

В диалоговом окне Добавить Team Foundation Server введите имя или URL-адрес сервера TFS. Ввожу как в инструкции localhost, выдает ошибку, что невозможно соединиться с сервером. Что делать? Никакого администратора нет, что вводить?

Артем Хмелев
Артем Хмелев
Россия, 5
Μаксим Εфремов
Μаксим Εфремов
Россия