Практическое руководство. Создание модульного теста

Обновлен: Ноябрь 2007

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

Использование операторов Assert в модульных тестах

По умолчанию каждый автоматически созданный модульный тест вызывает метод Inconclusive, из-за чего тест выдает сбой, поскольку основная часть теста еще не реализована. Нужно добавить в тест код, чтобы проверить правильность работы тестируемого метода. Для этого обычно нужно создать значение, а затем сравнить его с ожидаемым значением при помощи оператора Assert.AreEqual. Пример см. в разделе "Пример модульного теста" в Структура модульных тестов. Только что созданные модульные тесты содержат комментарии "To-do", означающие необходимость изменений.

Модульный тест, не содержащий оператора Assert, автоматически работает вплоть до истечения времени ожидания или до возникновения непредвиденного исключения. Дополнительные сведения см. в разделах Основные результаты теста и Использование классов Assert.

Открытие и написание модульных тестов

В этом разделе рассматриваются две процедуры:

Чтобы изменить существующий модульный тест

  1. В тестовом проекте в обозревателе решений найдите и откройте файл, содержащий модульный тест, затем найдите метод модульного теста, который нужно изменить.

    либо

    В окне Представление теста дважды щелкните модульный тест. При этом откроется файл, содержащий модульный тест; файл прокрутится до метода модульного теста.

  2. Найдите в методе присвоения переменных.

    В только что созданных текстах присвоения переменных помечены операторами "To-Do", которые напоминают о необходимости изменить присвоение. Например, ниже приведет пример типичного присвоения, которое нужно изменить:

    string target.owner = null; // TODO: Initialize to an appropriate value 
    
  3. Присвойте каждой переменной соответствующее значение.

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

  4. Найдите и измените в методе операторы Assert. При необходимости добавьте дополнительные операторы Assert.

Платформа Unit Testing Framework обеспечивает многочисленные дополнительные классы Assert и методы, обеспечивающие гибкость при написании операторов Assert. Дополнительные сведения см. в разделе Платформа Unit Testing Framework.

Чтобы создать модульный тест путем ввода

  1. В обозревателе решений щелкните тестовый проект правой кнопкой мыши, укажите Добавить и выберите Создать тест.

    либо

    Щелкните правой кнопкой окно Представление теста и выберите Создать тест.

    Будет открыто диалоговое окно Добавить новый тест.

  2. В разделе Шаблоны щелкните Модульный тест, затем нажмите кнопку ОК.

    В проект будет добавлен новый файл исходного кода с таким именем как UnitTest1.cs is на языке тестового проекта. Файл содержит несколько элементов, необходимых для модульных тестов.

    • Файл содержит ссылки на пространства имен Microsoft.VisualStudio.TestTools.UnitTesting и System.

    • Файл определяет свое собственное пространство имен, содержащее тестовый класс. Тестовые классы имеют атрибут [TestClass].

    • Файл содержит метод инициализации и метод очистки. Эти методы имеют атрибуты [TestInitialize()] и [TestCleanup()] соответственно.

    • Файл содержит один пустой тестовый метод с атрибутом [TestMethod]. Именно здесь нужно добавить логику теста. По умолчанию этот метод называется TestMethod1().

    Этот файл также открывается в окне для изменения исходного кода. Новый (пустой) тестовый метод отображается в окне представления тестов и в редакторе списка тестов.

  3. Добавьте тестовый код в тестовый метод.

Платформа Unit Testing Framework обеспечивает многочисленные дополнительные классы Assert и методы, обеспечивающие гибкость при написании операторов Assert. Дополнительные сведения см. в разделах Общие сведения о модульных тестах и Платформа Unit Testing Framework.

См. также

Основные понятия

Платформа Unit Testing Framework

Другие ресурсы

Практическое руководство. Создание модульного теста

Создание модульных тестов

Общие сведения о модульных тестах

Управление тестами

Выполнение тестов

Анализ результатов тестов