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


Используйте Microsoft.Testing.Platform в режиме VSTest dotnet test

В этой статье объясняется интеграция dotnet test для Microsoft.Testing.Platform, которая предоставляется Microsoft.Testing.Platform.MSBuild при запуске в режиме VSTest dotnet test.

Перед погружением в эту статью рекомендуется сначала прочитать тестирование с помощью dotnet test, что объясняет два режима dotnet test (режимы VSTest и MTP).

По умолчанию dotnet test для запуска тестов используется VSTest. Чтобы включить поддержку Microsoft.Testing.Platform в dotnet test, у вас есть два варианта:

  1. Используйте dotnet test в режиме VSTest и укажите <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport> свойство MSBuild в файле проекта.
  2. Используйте dotnet test в режиме MTP для более полной поддержки MTP в dotnet test, начиная только с пакета SDK для .NET 10.

Оба варианта подробно описаны в статье о тестировании с помощью dotnet test.

Это важно

Остальная часть этой статьи относится исключительно к режиму dotnet test VSTest.

Осторожность

Начиная с пакета SDK для .NET 10, рекомендуется не использовать режим dotnet test VSTest при работе с Microsoft.Testing.Platform.

Показать сбой для каждого теста

По умолчанию тестовые сбои суммируются в файл .log, а в MSBuild сообщается один сбой для каждого тестового проекта.

Чтобы отобразить ошибки для каждого неудачного теста, укажите -p:TestingPlatformShowTestsFailure=true в командной строке или добавьте свойство <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure> в файл проекта.

В командной строке:

dotnet test -p:TestingPlatformShowTestsFailure=true

Или в файле проекта:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>

    <IsPackable>false</IsPackable>

    <OutputType>Exe</OutputType>
    <EnableMSTestRunner>true</EnableMSTestRunner>

    <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>

    <!-- Add this to your project file. -->
    <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure>

  </PropertyGroup>

  <!-- ... -->

</Project>

Показать полные выходные данные платформы

По умолчанию все выходные данные консоли, которые записываются в базовый исполняемый файл теста, фиксируются и скрыты от пользователя. Сюда входят баннер, сведения о версии и отформатированные сведения о тесте.

Чтобы отобразить эти сведения вместе с выходными данными MSBuild, используйте <TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>.

Этот параметр не влияет на то, как платформа тестирования записывает выходные данные пользователей, написанные Console.WriteLine или другими аналогичными способами записи в консоль.

В командной строке:

dotnet test -p:TestingPlatformCaptureOutput=false

Или в файле проекта:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>

    <IsPackable>false</IsPackable>

    <OutputType>Exe</OutputType>
    <EnableMSTestRunner>true</EnableMSTestRunner>

    <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>

    <!-- Add this to your project file. -->
    <TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>

  </PropertyGroup>

  <!-- ... -->

</Project>

Это важно

Все приведенные выше примеры добавляют свойства, такие как EnableMSTestRunner, TestingPlatformDotnetTestSupportи TestingPlatformCaptureOutput в csproj-файле. Однако настоятельно рекомендуется задать эти свойства в Directory.Build.props. Таким образом, вам не нужно добавлять его в каждый файл тестового проекта, и вы не рискуете создать новую ситуацию с проектом, который не задает эти свойства, и в итоге получить решение, где некоторые проекты являются VSTest, а другие — Microsoft.Testing.Platform, что может не работать правильно и является неподдерживаемым сценарием.