Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Эта статья предназначена для разработчиков, создающих пользовательские тестовые фреймворки или расширения для 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: Доступ к настройкам конфигурации, ведению журнала, шине сообщений и другим службам платформы.