Поделиться через


Обновление с MSTestV1 до MSTestV2

Вы можете обновить тестовый проект, перенаправив версию MSTest, указанную в .csproj, с версии MSTestV1 на версию MSTestV2. Не все функции в MSTestV1 были перенесены в MSTestV2, поэтому некоторые изменения могут потребоваться для устранения ошибок. Ознакомьтесь с функциями MSTestV1, которые не поддерживаются в MSTestV2, чтобы понять, какие функции больше не работают. Некоторые из этих функций могут быть удалены из тестов.

  1. Удалите ссылку на сборку Microsoft.VisualStudio.QualityTools.UnitTestFramework из проекта модульного теста.

  2. Добавьте ссылки на пакет NuGet в MSTestV2, включая пакеты MSTest.TestFramework и MSTest.TestAdapter на nuget.org. Пакеты можно установить в консоли диспетчера пакетов NuGet с помощью следующих команд:

    PM> Install-Package MSTest.TestAdapter -Version 3.1.1
    PM> Install-Package MSTest.TestFramework -Version 3.1.1
    

Пример csproj старого стиля

Пример .csproj для MSTestV1:

<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
  <Private>False</Private>
</Reference>

Пример .csproj теперь предназначен для MSTestV2:

<Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
  <HintPath>..\packages\MSTest.TestFramework.2.1.2\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll</HintPath>
</Reference>

Заметка

Тестовые проекты, являющиеся тестами пользовательского интерфейса Coded UI или нагрузочными тестами для веба, несовместимы с MSTestV2. Эти типы проектов устарели. Подробнее о снятии поддержки кодированных тестов пользовательского интерфейса и снятии поддержки веб-нагрузочных тестов .

csproj в формате SDK (.NET Core и .NET 5 или более поздних версий)

Если ваш файл .csproj является новым форматом SDK .csproj, вы, скорее всего, уже используете MSTestV2. Пакеты NuGet для MSTestV2 можно найти и адаптер MSTestV2 в NuGet.

Пример:

<ItemGroup>
  <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.7.1" />
  <PackageReference Include="MSTest.TestAdapter" Version="3.1.1" />
  <PackageReference Include="MSTest.TestFramework" Version="3.1.1" />
</ItemGroup>

Почему обновление до MSTestV2?

В 2016 году мы выпустили следующий шаг в развитии платформы MSTest с помощью MSTestV2. Дополнительные сведения об этом изменении см. в записи блога.

  • MSTestV2 проще получить и обновить, так как он поставляется как пакет NuGet .

  • MSTestV2 — это с открытым исходным кодом.

  • Единая поддержка платформы приложений — MSTestV2 — это конвергентная реализация, которая обеспечивает единую поддержку платформы приложений в .NET Framework, .NET Core, ASP.NET Core и UWP. Читать далее.

  • Реализация полностью кроссплатформенная (Windows, Linux, Mac). Читать далее.

  • MSTestV2 поддерживает назначение .NET Framework 4.5.0 и более поздних версий, .NET Core 1.0 и более поздних версий (универсальные приложения Windows 10+), ASP.NET Core 1.0 и более поздних версий, а также .NET 5 и более поздних версий.

  • Предоставляет унифицированный механизм расширения для конечного пользователя. Подробнее.

  • Обеспечивает единообразную DataRow поддержку для всех тестовых проектов на основе MSTest. Читать далее.

  • Включает размещение атрибута TestCategory на уровне класса или сборки. Читайте дальше.

  • Методы тестирования из базовых классов, определенных в другой сборке, теперь обнаруживаются и выполняются из производного класса Test. Это изменение приводит к согласованному поведению с производными типами классов тестов. Если это поведение не требуется по соображениям совместимости, его можно изменить обратно с помощью следующих параметров выполнения:

    <RunSettings>    
    <MSTest> 
      <EnableBaseClassTestMethodsFromOtherAssemblies>false</EnableBaseClassTestMethodsFromOtherAssemblies> 
    </MSTest> 
    </RunSettings>
    
  • Обеспечивает более детальное управление параллельным выполнением с помощью параллельного выполнения сборки тестов. Эта функция позволяет выполнять тесты в сборке параллельно.

  • Метод TestCleanup на TestClass вызывается, даже если соответствующий ему метод TestInitialize завершается ошибкой. Детали проблемы.

  • Время, затраченное AssemblyInitialize и ClassInitialize, не учитывается в течение теста. Это изменение ограничивает их влияние на сбой теста из-за превышения времени ожидания.

  • Тесты, которые не могут быть запущены, можно настроить как неудачные с помощью тега MapNotRunnableToFailed, который является частью узла адаптера в файле .runsettings.

    <RunSettings>    
    <MSTest> 
      <MapNotRunnableToFailed>true</MapNotRunnableToFailed> 
    </MSTest> 
    </RunSettings>
    

Функции MSTestV1, которые не поддерживаются в MSTestV2

  • Тесты не могут быть включены в "упорядоченный тест".
  • Изменения в файле .testsettings:
    • Больше не может использоваться для настройки адаптера.
    • Больше не поддерживает раздел <LegacySettings>, что означает, что его нельзя использовать для задания атрибутов. Например, DeploymentItem. Используйте новый .runsettings-файл для конфигурации тестового запуска.
  • Адаптер не поддерживает списки тестов, указанные как файл .vsmdi с тегами .
  • Не поддерживаются типы закодированных тестов пользовательского интерфейса и веб-проекта производительности и нагрузочного теста. Узнайте больше о снятии с поддержки индивидуального теста пользовательского интерфейса и о снятии с поддержки теста веб-нагрузки .
  • Связь с элементом тестового случая в TFS не поддерживается.