Написание кода пользовательских модульных тестов с помощью платформы Unit Testing Framework
Платформа Unit Testing Framework поддерживает выполнение модульных тестов в Visual Studio. При написании кода модульных тестов используются классы и члены пространства имен Microsoft.VisualStudio.TestTools.UnitTesting. Они используются как при создании модульных тестов с нуля, так и при доработке тестов, созданных из проверяемого кода.
Группы элементов
Для более четкого представления общих сведений о платформе Unit Testing Framework элементы пространства имен "UnitTesting" в данном разделе упорядочены по группам в зависимости от функциональности.
Примечание
Элементы атрибутов, имена которых заканчиваются строкой "Attribute", могут использоваться как со строкой "Attribute", так и без нее.Например, следующие два примера кода выполняют одну и ту же задачу.
[TestClass()]
[TestClassAttribute()]
Элементы, используемые для управляемого данными тестирования
Для настройки управляемых данными модульных тестов используются следующие элементы. Дополнительные сведения см. в разделах Практическое руководство. Создание модульного теста, управляемого данными и Пошаговое руководство. Использование файла конфигурации для определения источника данных.
Атрибуты, используемые для установки порядка вызовов
Кодовая точка, оформленная одним из следующих атрибутов, вызывается в указанный момент времени. Дополнительные сведения см. в разделе Составляющие модульного теста.
Для сборок
Методы "AssemblyInitialize" и "AssemblyCleanup" вызываются сразу после загрузки сборки и непосредственно перед ее выгрузкой.
Для классов
Методы "ClassInitialize" и "ClassCleanup" вызываются сразу после загрузки класса и непосредственно перед его выгрузкой.
Для методов теста
Атрибуты, используемые для идентификации тестовых классов и методов
Каждый тестовый класс должен иметь атрибут "TestClass", каждый тестовый метод — атрибут "TestMethod". Дополнительные сведения см. в разделе Составляющие модульного теста.
Классы "Assert" и связанные с ним исключения
С помощью модульных тестов можно проверить поведение конкретного приложения, используя различные вид операторов, исключений и атрибутов "Assert". Дополнительные сведения см. в разделе Использование классов Assert.
Класс "TestContext"
В окне свойств Visual Studio отображаются следующие атрибуты и связанные с ними значения для конкретного метода теста. Эти атрибуты не предназначены для доступа из кода модульного теста. Вместо этого они влияют на способ применения или выполнения модульного теста либо через интегрированную среду разработки Visual Studio, либо через обработчик тестов Visual Studio. Например, некоторые из этих атрибутов появляются в качестве столбцов в окне диспетчера тестов и окне результатов теста, что позволяет использовать их для группировки и сортировки тестов и их результатов. Одним из таких атрибутов является "TestPropertyAttribute", с помощью которого в модульные тесты добавляются произвольные метаданные. Например, его можно использовать для хранения имени области действия пройденного теста, пометив модульный тест с помощью [TestProperty("TestPass", "Accessibility")]. Или его можно использовать для хранения индикатора типа теста: [TestProperty("TestKind", "Localization")]. Созданное с помощью этого атрибута свойство и присвоенное ему значение отобразятся в окне свойств Visual Studio под заголовком Сведения теста.
Классы конфигурации теста
Атрибуты, используемые для формирования отчетов
В этом разделе описаны атрибуты, связывающие метод теста, к которому они применены, с сущностями в иерархии командного проекта Team Foundation Server.
Классы, использующие закрытые методы доступа
Как описывается в разделе Использование программы Publicize для создания закрытого метода доступа, вы можете создать модульный тест для закрытого метода. При этом создается класс закрытых методов доступа, являющийся экземпляром объекта класса "PrivateObject". Класс "PrivateObject" является классом-оболочкой, использующим отражение в рамках процесса доступа через закрытые методы. Аналогичным является класс "PrivateType", но вместо вызова закрытых методов экземпляра используется вызов закрытых статических методов.