Обзор MSTest

MSTest, Microsoft Testing Framework, является полностью поддерживаемой платформой тестирования с открытым исходным кодом и кроссплатформенной платформой для приложений .NET. Он позволяет создавать и выполнять тесты, а также предоставляет наборы тестов с интеграцией с Visual Studio и обозревателями тестов Visual Studio Code, интерфейсом командной строки .NET и многими конвейерами CI.

MSTest размещается в GitHub и работает со всеми поддерживаемыми целевыми объектами .NET.

Ключевые особенности

MSTest предоставляет комплексные возможности тестирования:

Поддерживаемые платформы

MSTest поддерживает широкий спектр платформ .NET и целевых платформ. В следующей таблице приведены общие сведения о поддержке платформы и специальных рекомендациях.

Platform Целевые платформы Поддержка потоков Специальные атрибуты Примечания.
.NET .NET 8+ Полная параллелизация Все атрибуты Рекомендуется для новых проектов
платформа .NET 4.6.2+ Полная параллелизация Все атрибуты Полная поддержка функций
UWP UAP 10, .NET 10+ с инструментами UWP Поток пользовательского интерфейса UITestMethod MSTest 4.5 и MTP 2.5 поддерживают классические и современные приложения UWP через sidecar-компонент MSTest.Sdk для модели приложений
WinUI 3 .NET 8+ Поток пользовательского интерфейса UITestMethod MTP поддерживает упакованные, распакованные и appContainer узлы; Просмотр тестов приложений UWP и WinUI 3 с помощью MSTest и MTP
автоматизация пользовательского интерфейса рабочего стола Windows целевой объект .NET 8+ Windows STA STATestClass Предварительная версия MSTest 4.5 может запускать неупакованные приложения Win32, Windows Forms и WPF и делать окно доступным через Windows модель автоматизации пользовательского интерфейса
Нативный AOT .NET 8+ Полная параллелизация Большинство атрибутов Ограниченный набор функций; см. пример native AOT
Браузер WebAssembly .NET 10+ пользовательский хост Однопотоковый Limited Поддержка выполнения MTP начинается с MSTest 4.4
WASI WebAssembly .NET 10+ пользовательский хост Однопотоковый Limited Поддержка выполнения MTP начинается с MSTest 4.4

Особенности, связанные с платформой

Тестирование UWP

Тесты UWP выполняются в контейнере приложений UWP и требуют потока пользовательского интерфейса для многих операций:

[TestClass]
public class UwpTests
{
    [UITestMethod]
    public void TestUwpControl()
    {
        // Test runs on UI thread
        var button = new Button();
        Assert.IsNotNull(button);
    }
}

Начиная с MSTest 4.5 и MTP 2.5, используйте MSTest.Sdk для запуска классических тестов UWP и современных .NET UWP через MTP. Sidecar-компонент с полным доверием регистрирует и активирует пакет, авторизует точный SID пакета приложения для взаимодействия по MTP и копирует результирующие артефакты из хранилища пакета.

Для современного UWP требуется .NET 10, UseUwpа также цепочка инструментов сборки UWP Visual Studio. Классическая модель UWP сохраняет существующую uap10.0 форму проекта. Полные конфигурации см. в современном примере UWP и классическом примере UWP.

Тестирование WinUI 3

Тесты WinUI 3 также требуют доступа к потокам пользовательского интерфейса для тестирования визуальных компонентов:

[TestClass]
public class WinUITests
{
    [UITestMethod]
    public void TestWinUIControl()
    {
        // Test runs on UI thread
        var window = new MainWindow();
        Assert.IsNotNull(window);
    }
}

MTP поддерживает упакованные тестовые приложения WinUI 3 с полным уровнем доверия, неупакованные приложения и приложения WinUI 3, настроенные для AppContainer. MSTest.Sdk напрямую запускает неупакованные приложения и использует свой вспомогательный компонент app-model для регистрации и активации упакованных приложений.

Для поддержки AppContainer требуется MSTest 4.5 и MTP 2.5 или более поздней версии. VSTest не поддерживает распаковку WinUI 3. Сведения о настройке см. в разделе "Тестирование приложений UWP и WinUI 3" с помощью MSTest и MTP.

автоматизация пользовательского интерфейса рабочего стола Windows

Пакет MSTest.Windows.UIAutomation интегрирует управление жизненным циклом MSTest с Windows модель автоматизации пользовательского интерфейса для распаковки приложений Win32, Windows Forms и WPF. О настройке, ограничениях, а также базовых классах ApplicationTest и WindowTest см. в статье Тестирование классических приложений Windows с помощью MSTest модель автоматизации пользовательского интерфейса.

Встроенный AOT

Нативная компиляция AOT поддерживается с некоторыми ограничениями из-за ограниченных возможностей отражения. Используйте генераторы источников, где это возможно, и протестируйте сценарии AOT с помощью примера NativeAotRunner.

Браузер и WASI WebAssembly

MSTest 4.4 поддерживает пользовательские хосты браузера или WASI WebAssembly на базе .NET 10. Чтобы выполнить тесты из указанной сборки MSTest, вызовите AddMSTest. В хост-проекте установите для EnableMSTestRunner значение true, а для GenerateTestingPlatformEntryPoint — false. Сохраняйте соответствие версий пакетов MSTest и MTP.

В однопоточной среде выполнения WebAssembly MSTest не может принудительно прервать время ожидания теста. Ожидание отладчика не поддерживается в браузере или WASI, а браузер не поддерживает параметры запуска отладчика.

MTP может потоково передавать данные TRX и передавать артефакты тестов и файлов сеанса через виртуальную файловую систему WebAssembly хоста и канал артефактов. Публикация в Azure DevOps работает только в том случае, если хост предоставляет поддерживаемый доступ по HTTP и требуемую аутентификацию конвейера. Эти функции не предоставляют неограниченный доступ к файловой системе узла или сетевому доступу.

Описание полноценного браузерного хоста см. в примере BrowserPlayground.

Поддержка потоков STA

В сценариях взаимодействия с Windows COM MSTest предоставляет STATestClass и STATestMethod атрибуты для выполнения тестов в однопоточном пространстве. Дополнительные сведения о потоке STA, в том числе поддержку асинхронного продолжения с UseSTASynchronizationContext, см. в Threading attributes.

Исполняющие средства тестирования

MSTest поддерживает две платформы выполнения тестов:

  • Microsoft.Testing.Platform (MTP): современная рекомендуемая тестовая платформа с улучшенной производительностью и расширяемостью.
  • VSTest: исходная и стандартная тестовая платформа для .NET.

Для новых проектов рекомендуется использовать MTP с MSTest.Sdk.

Политика поддержки MSTest

Начиная с версии 3.0.0, MSTest строго следует семантике управления версиями.

Команда MSTest поддерживает только последнюю выпущенную версию и настоятельно рекомендует пользователям всегда обновлять последнюю версию, чтобы воспользоваться улучшениями и исправлениями безопасности. Предварительные версии выпусков не поддерживаются корпорацией Майкрософт, но предлагаются для общедоступного тестирования перед окончательным выпуском.

История версий

MSTest пережила значительную эволюцию в основных версиях:

  • MSTest версии 1: исходная платформа тестирования Visual Studio
  • MSTest версии 2: первый выпуск с открытым исходным кодом с кроссплатформенной поддержкой
  • MSTest v3: современная переработка с улучшенной архитектурой и функциями
  • MSTest версии 4: текущая версия с расширенными функциями

Note

MSTest 4.5 находится на этапе разработки по состоянию на октябрь 2026 года. Функции, помеченные как представленные в MSTest 4.5, требуют предварительной сборки до выпуска версии 4.5.0.

Дополнительные сведения обо всех выпусках см. в журнале изменений MSTest.

Если вы обновляете более раннюю версию, ознакомьтесь с руководствами по миграции:

Кардинальные изменения

Команда MSTest тщательно проверяет и сводит к минимуму изменения, нарушающие совместимость. Если изменения с нарушением совместимости необходимы, команда использует объявления GitHub и метки на изменения с нарушением совместимости в задачах, чтобы заранее информировать сообщество, давая пользователям время предоставлять отзывы и выражать свои опасения перед выпуском изменений.

Дальнейшие шаги