Обзор 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 9+ с UAP Поток пользовательского интерфейса UITestMethod Используйте VSTest. Требуется <UseUwp>true</UseUwp>современная .NET UWP; см. пример UWP
WinUI 3 .NET 8+ Поток пользовательского интерфейса UITestMethod Требуется Windows App SDK; см. статью "Тестирование приложений WinUI 3 с помощью MSTest и MTP"
Нативный AOT .NET 8+ Полная параллелизация Большинство атрибутов Ограниченный набор функций; см. пример native AOT
Браузер WebAssembly .NET 10+ пользовательский узел Однопотоковый Limited Настраиваемые Microsoft. Поддержка узла Testing.Platform начинается с 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);
    }
}

Используйте VSTest для классической модели UWP и современной .NET UWP, так как оба запускаются в AppContainer. Сведения о современной .NET настройке UWP см. в примере BlankUwpNet9App.

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

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

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

Сведения о настройке непакованных или упакованных тестов WinUI 3 с полным доверием см. в статье "Тестирование приложений WinUI 3 с помощью MSTest и MTP".

Начиная с MSTest 4.4, Microsoft. Testing.Platform также поддерживает распаковку тестовых приложений WinUI. VSTest не поддерживает этот сценарий. Сведения о настройке см. в примере с распаковкой WinUI.

Встроенный AOT

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

Браузер WebAssembly

Начиная с MSTest 4.4 пользовательская .NET 10-й узел браузера WebAssembly может вызывать AddMSTest тесты из указанной сборки MSTest. В хост-проекте установите и установите EnableMSTestRunner для GenerateTestingPlatformEntryPointtruefalse этого пользовательский узел, принадлежащий точке входа приложения. Сохраните MSTest и Microsoft. Версии пакета Testing.Platform выровнены.

В однопоточной среде выполнения WebAssembly MSTest не может прерывать тесты времени ожидания, а параметры запуска отладчика не поддерживаются. Полный узел см. в примере 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.4 находится на этапе разработки по состоянию на август 2026 года. Функции, помеченные как представленные в MSTest 4.4, требуют предварительной сборки до выпуска версии 4.4.0.

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

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

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

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

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