Bagikan melalui


Gunakan Microsoft.Testing.Platform dalam mode VSTest dotnet test

Artikel ini menjelaskan integrasi dotnet test untuk Microsoft.Testing.Platform, yang disediakan oleh Microsoft.Testing.Platform.MSBuild saat berjalan dalam mode VSTest dari dotnet test.

Sebelum menyelami artikel ini, disarankan untuk terlebih dahulu membaca Pengujian dengan pengujian dotnet, yang menjelaskan dua mode dotnet test (mode VSTest dan MTP).

Secara default, dotnet test menggunakan VSTest untuk menjalankan pengujian. Untuk mengaktifkan dukungan di Microsoft.Testing.Platformdotnet test, Anda memiliki dua opsi:

  1. Gunakan dotnet test dalam mode VSTest dan tentukan <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport> properti MSBuild dalam file proyek Anda.
  2. Gunakan dotnet test dalam mode MTP untuk dukungan MTP yang lebih asli di dotnet test, yang hanya didukung dimulai dengan .NET 10 SDK.

Kedua opsi dijelaskan secara rinci dalam artikel Pengujian dengan dotnet test.

Penting

Bagian berikutnya dari artikel ini khusus untuk mode VSTest dari dotnet test.

Perhatian

Dimulai dengan .NET 10 SDK, dianjurkan untuk tidak menggunakan mode VSTest dotnet test saat dijalankan dengan Microsoft.Testing.Platform.

Perlihatkan kegagalan per pengujian

Secara default, kegagalan pengujian diringkas ke dalam file .log, dan satu kegagalan per proyek pengujian dilaporkan ke MSBuild.

Untuk menampilkan kesalahan per pengujian yang gagal, tentukan -p:TestingPlatformShowTestsFailure=true pada baris perintah, atau tambahkan properti <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure> ke file proyek Anda.

Pada baris perintah:

dotnet test -p:TestingPlatformShowTestsFailure=true

Atau dalam file proyek:

<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>

Tampilkan output platform lengkap

Secara default, semua output konsol yang ditulis oleh program pengujian yang mendasari ditangkap dan disembunyikan dari pengguna. Ini termasuk banner, informasi versi, dan informasi pengujian yang diformat.

Untuk menampilkan informasi ini bersama dengan output MSBuild, gunakan <TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>.

Opsi ini tidak memengaruhi bagaimana kerangka kerja pengujian menangkap output pengguna yang ditulis oleh Console.WriteLine atau cara serupa lainnya untuk menulis ke konsol.

Pada baris perintah:

dotnet test -p:TestingPlatformCaptureOutput=false

Atau dalam file proyek:

<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>

Penting

Semua contoh di atas menambahkan properti seperti EnableMSTestRunner, TestingPlatformDotnetTestSupport, dan TestingPlatformCaptureOutput dalam file csproj. Namun, sangat disarankan agar Anda mengatur properti ini di Directory.Build.props. Dengan demikian, Anda tidak perlu menambahkannya ke setiap file proyek pengujian, dan Anda tidak berisiko memperkenalkan proyek baru yang tidak mengatur properti-properti ini sehingga akhirnya berakhir dengan solusi di mana beberapa proyek menggunakan VSTest sementara yang lain menggunakan Microsoft.Testing.Platform, yang mungkin tidak berfungsi dengan benar dan merupakan skenario yang tidak didukung.