Бөлісу құралы:


Обзор MSTest

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

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

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

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

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

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

Platform Целевые платформы Поддержка потоков Специальные атрибуты Примечания.
.NET .NET 8+ Полная параллелизация Все атрибуты Рекомендуется для новых проектов
.NET Framework 4.6.2+ Полная параллелизация Все атрибуты Полная поддержка функций
UWP UAP 10, .NET 9+ с UAP Поток пользовательского интерфейса UITestMethod Требуются <UseUwp>true</UseUwp>настройки; см. пример UWP
WinUI 3 .NET 8+ Поток пользовательского интерфейса UITestMethod Требуется пакет SDK для приложений Windows; См . пример WinUI
Нативный AOT .NET 8+ Полная параллелизация Большинство атрибутов Ограниченный набор функций; см. пример native AOT

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

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

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

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

Сведения о настройке 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 см. в примере BlankWinUINet9App и примере MSTestRunnerWinUI.

Встроенный AOT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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