Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Эта статья предназначена для разработчиков, создающих пользовательские тестовые фреймворки или расширения для Microsoft.Testing.Platform.
Заметка
Полный пример кода см. в TestingPlatformExamples в репозитории Microsoft Test Framework.
Сводка точки расширения
| Точка расширения | Вход и выход из процесса | Цель |
|---|---|---|
| ITestFramework | В процессе | Единственное обязательное расширение. Обнаруживает и выполняет тесты. |
| IDataConsumer | В процессе | Подписывается на и обрабатывает тестовые данные из шины сообщений. |
| ITestSessionLifetimeHandler | В процессе | Выполняет код до и после тестового сеанса. |
| ITestApplicationLifecycleCallbacks | В процессе | Выполняет код в самом начале и самом конце тестового узла. |
| ICommandLineOptionsProvider | Both | Добавляет настраиваемые параметры командной строки. |
| ITestHostEnvironmentVariableProvider | Внепроцессный | Задает переменные среды перед запуском тестового узла. |
| ITestHostProcessLifetimeHandler | Внепроцессный | Наблюдает за внешним процессом узла тестирования. |
Расширения в процессе и расширения вне процесса
Расширения классифицируются по двум типам:
Внутрипроцессные расширения запускаются в процессе хоста тестирования вместе с платформой тестирования. Зарегистрируйте их с помощью
builder.TestHost:var builder = await TestApplication.CreateBuilderAsync(args); builder.TestHost.AddXXX(/* ... */);Расширения вне процесса выполняются в отдельном процессе, который наблюдает за узлом тестирования. Зарегистрируйте их с помощью
builder.TestHostControllers:var builder = await TestApplication.CreateBuilderAsync(args); builder.TestHostControllers.AddXXX(/* ... */);
Внепроцессные расширения необходимы, когда:
- Перед запуском тестового узла необходимо задать переменные среды.
- Необходимо отслеживать тестовый узел вневне, так как пользовательский код может завершиться сбоем или зависнуть в процессе.
При регистрации любого внепроцессного расширения платформа автоматически запускает второй процесс.
Интерфейс IExtension
Все точки расширения наследуют от IExtension, который предоставляет идентификацию и возможность включения/отключения.
public interface IExtension
{
string Uid { get; }
string Version { get; }
string DisplayName { get; }
string Description { get; }
Task<bool> IsEnabledAsync();
}
-
Uid: уникальный идентификатор расширения. Выберите уникальное значение, чтобы избежать конфликтов. -
Version: версия расширения с использованием семантического управления версиями. -
DisplayName: понятное имя, которое отображается в журналах и--infoвыходных данных. -
Description: описание, отображаемое в--infoвыходных данных. -
IsEnabledAsync(): вернитеfalse, чтобы исключить расширение из сеанса. Обычно решения основаны на параметрах конфигурации или командной строки.
Что читать дальше
-
Создание платформы тестирования: создание пользовательской
ITestFrameworkреализации, обработка запросов и отчет о результатах теста. - Создание расширений: создание внутрипроцессных и внепроцессных расширений, таких как потребители данных, обработчики сеансов и мониторы процессов.
- VSTest Bridge: упрощение миграции существующих платформ тестов на основе VSTest на Microsoft.Testing.Platform.
- Возможности: объявление и запрос возможностей платформы и расширений.
- Services: Доступ к настройкам конфигурации, ведению журнала, шине сообщений и другим службам платформы.