Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
MSTest предоставляет четко определенный жизненный цикл для классов тестов и методов тестирования, что позволяет выполнять операции установки и удаления на различных этапах процесса выполнения теста. Жизненный цикл можно сгруппировать на следующие три этапа:
- Жизненный цикл на уровне сборки
- Жизненный цикл на уровне класса
- Жизненный цикл тестов
Выполнение событий жизненного цикла происходит с самого высокого уровня (сборки) до самого низкого уровня (метод тестирования). Порядок выполнения выглядит следующим образом:
- Инициализация сборки
- Инициализация классов (для каждого тестового класса)
- Инициализация теста (для каждого метода теста)
- Выполнение тестов
- Очистка теста (для каждого метода теста)
- Очистка классов (для каждого тестового класса)
- Очистка сборки
Жизненный цикл уровня сборки
Жизненный цикл сборки описывает жизненный цикл всей сборки, включающую все классы и методы тестирования. Для управления жизненным циклом сборки MSTest предоставляет атрибуты AssemblyInitialize и AssemblyCleanup . Дополнительные сведения об этих атрибутах см. в документации о AssemblyInitialize и AssemblyCleanup.
Жизненный цикл уровня класса
Жизненный цикл класса теста относится к жизненному циклу отдельных классов тестов в сборке и может быть реализован с помощью атрибутов ClassInitialize и ClassCleanup . Эти атрибуты позволяют определять методы настройки и демонтажа, которые выполняются до и после всех тестов в классе соответственно. Дополнительные сведения об этих атрибутах см. документацию ClassInitialize и ClassCleanup. Жизненный цикл на уровне класса выполняется только один раз для каждого класса, независимо от количества тестов в этом классе.
Жизненный цикл уровня тестирования
Жизненный цикл уровня теста выполняется для каждого метода теста. Для параметризованных тестов каждый набор параметров рассматривается как отдельный метод тестирования, а жизненный цикл выполняется для каждого набора параметров. Жизненный цикл тестового уровня можно сгруппировать в такие этапы, как настройка, выполнение и очистка, при этом как настройка, так и очистка поддерживают несколько способов реализации.
Настройка
Этап установки жизненного цикла тестов отвечает за подготовку тестовой среды перед выполнением каждого метода теста. Это можно сделать с помощью TestInitialize
атрибута или реализации конструктора в тестовом классе. В случае наследования выполнение TestInitialize
методов следует порядку из базового класса в производный класс. Если тестовый класс реализует конструктор, он выполняется перед методом TestInitialize
. Дополнительные сведения об атрибуте TestInitialize
см. в документации по атрибуту уровня теста .
Замечание
В отличие от конструктора классов, TestInitialize
методы могут быть асинхронным, а также поддерживать использование атрибутов, таких как TimeoutAttribute
.
Исполнение
Этап выполнения — это этап, в котором выполняется фактический метод тестирования. Если метод теста возвращает Task или ValueTask, выполнение метода будет ожидаться.
Предупреждение
В случае асинхронных методов тестирования SynchronizationContext не предоставляется. Это не относится к UITestMethod
тестам для UWP и WinUI, так как они выполняются на потоке UI с SynchronizationContext.
Уборка
Этап очистки жизненного цикла тестов отвечает за очистку тестовой среды после выполнения каждого метода теста.
Это можно сделать с помощью атрибута TestCleanup
или реализации IDisposable
/IAsyncDisposable
интерфейса в тестовом классе.
Если тестовый класс реализует IDisposable
или IAsyncDisposable
, его метод Dispose
/DisposeAsync
выполняется после метода TestCleanup
.
В случае наследования выполнение TestCleanup
методов следует порядку из производного класса в базовый класс.
Дополнительные сведения об атрибуте TestInitialize
см. в документации по атрибуту уровня теста .
Заказ
Полный порядок жизненного цикла тестового уровня выглядит следующим образом:
- Создание экземпляра тестового класса
- Задать
TestContext
свойство, если присутствует - Запустите TestInitialize (если реализовано)
- Выполнение метода тестирования
- Обновление
TestContext
с помощью результатов теста (напримерOutcome
, свойства) - Запуск TestCleanup при реализации
- Запустите DisposeAsync, если реализовано
- Выполните Dispose, если он реализован