Bagikan melalui


Migrasi dari VSTest ke Microsoft.Testing.Platform

Dalam artikel ini, Anda mempelajari cara bermigrasi dari VSTest ke Microsoft.Testing.Platform.

Ikut serta untuk menggunakan Microsoft.Testing.Platform

Langkah pertama dalam migrasi adalah ikut serta menggunakan Microsoft.Testing.Platform.

Untuk semua kerangka kerja pengujian, tambahkan <OutputType>Exe</OutputType> ke semua proyek pengujian dalam solusi. Setelah itu, ikuti panduan khusus kerangka kerja.

MSTest

Microsoft.Testing.Platform didukung oleh MSTest mulai dari 3.2.0. Namun, sebaiknya perbarui ke versi MSTest terbaru yang tersedia.

Untuk ikut serta, tambahkan <EnableMSTestRunner>true</EnableMSTestRunner> di bawah PropertyGroup di file Directory.Build.props.

Nota

Saat menggunakan MSTest.Sdk, Microsoft.Testing.Platform digunakan secara default, kecuali <UseVSTest>true</UseVSTest> ditentukan.

NUnit

Microsoft.Testing.Platform didukung oleh NUnit3TestAdapter dimulai dengan 5.0.0.

Untuk ikut serta, tambahkan <EnableNUnitRunner>true</EnableNUnitRunner> di bawah PropertyGroup di dalam file Directory.Build.props.

xUnit.net

Microsoft.Testing.Platform mulai didukung oleh xunit.v3.

Untuk ikut serta, tambahkan <UseMicrosoftTestingPlatformRunner>true</UseMicrosoftTestingPlatformRunner> di bawah PropertyGroup dalam file Directory.Build.props.

dotnet test

Pilihan untuk .NET 9 SDK dan versi sebelumnya

Pada .NET 9 SDK dan versi sebelumnya, tidak ada dukungan asli untuk Microsoft.Testing.Platform untuk dotnet test. Dukungan dibangun di atas infrastruktur VSTest. Untuk menggunakannya, tambahkan <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport> di bawah PropertyGroup dalam file Directory.Build.props.

Penting

Saat menjalankan dukungan Microsoft.Testing.Platform dalam mode ini, Anda perlu menambahkan -- untuk memisahkan dotnet test argumen dari argumen platform baru. Contohnya, dotnet test --no-build -- --list-tests.

Ikut serta untuk .NET 10 SDK dan yang lebih baru

Dimulai dengan .NET 10 SDK, ada dukungan asli untuk Microsoft.Testing.Platform. Untuk menggunakannya, Anda harus menentukan runner pengujian seperti Microsoft.Testing.Platform dalam global.json:

{
  "test": {
    "runner": "Microsoft.Testing.Platform"
  }
}

Penting

Dalam mode ini, ekstra -- tidak lagi digunakan.

Memperbarui dotnet test pemanggilan

Opsi dotnet test baris perintah dibagi menjadi dua kategori: argumen terkait build dan yang terkait pengujian.

Argumen terkait build tidak relevan dengan platform pengujian dan karenanya tidak perlu diperbarui untuk platform baru. Di sini tercantum argumen terkait build.

  • -a|--arch <ARCHITECTURE>
  • --artifacts-path <ARTIFACTS_DIR>
  • -c|--configuration <CONFIGURATION>
  • -f|--framework <FRAMEWORK>
  • -e|--environment <NAME="VALUE">
  • --interactive
  • --no-build
  • --nologo
  • --no-restore
  • -o|--output <OUTPUT_DIRECTORY>
  • --os <OS>
  • -r|--runtime <RUNTIME_IDENTIFIER>
  • -v|--verbosity <LEVEL>

Argumen terkait pengujian khusus VSTest dan perlu diubah agar sesuai dengan platform baru. Tabel berikut ini memperlihatkan pemetaan antara argumen VSTest dan platform baru:

Argumen VSTest Argumen platform baru
--test-adapter-path <ADAPTER_PATH> Tidak relevan untuk Microsoft.Testing.Platform
--blame Tidak relevan untuk Microsoft.Testing.Platform
--blame-crash --crashdump (memerlukan ekstensi Crash dump)
--blame-crash-dump-type <DUMP_TYPE> --crashdump-type (memerlukan ekstensi Crash dump)
--blame-crash-collect-always Tidak didukung
--blame-hang --hangdump (memerlukan ekstensi Hang dump)
--blame-hang-dump-type <DUMP_TYPE> --hangdump-type (memerlukan ekstensi Hang dump)
--blame-hang-timeout <TIMESPAN> --hangdump-timeout (memerlukan ekstensi Hang dump)
--collect <DATA_COLLECTOR_NAME> Tergantung pada pengumpul data
-d\|--diag <LOG_FILE> --diagnostic
--filter <EXPRESSION> Bergantung pada kerangka kerja pengujian yang dipilih
-l\|--logger <LOGGER> Tergantung pada pencatat
--results-directory <RESULTS_DIR> --results-directory <RESULTS_DIR>
-s\|--settings <SETTINGS_FILE> Bergantung pada kerangka kerja pengujian yang dipilih
-t\|--list-tests --list-tests
-- <RunSettings arguments> --test-parameter (disediakan oleh VSTestBridge)

--collect

--collect adalah titik ekstensibilitas umum di VSTest untuk pengumpul data apa pun. Model ekstensibilitas Microsoft.Testing.Platform berbeda dan tidak ada argumen terpusat yang akan digunakan oleh semua pengumpul data. Dengan Microsoft.Testing.Platform, setiap pengumpul data dapat menambahkan opsi baris perintahnya sendiri. Misalnya, menjalankan Microsoft CodeCoverage melalui VSTest mungkin mirip dengan yang berikut ini:

dotnet test --collect "Code Coverage;Format=cobertura"

Dengan Microsoft.Testing.Platform, ini menjadi:

dotnet test --coverage --coverage-output-format cobertura

Penting

Seperti yang dijelaskan sebelumnya, saat menggunakan Microsoft.Testing.Platform dengan dotnet test berbasis VSTest, diperlukan tambahan -- sebelum argumen yang dimaksudkan untuk diteruskan ke platform. Jadi, ini menjadi dotnet test -- --coverage --coverage-output-format cobertura.

--filter

--filter adalah filter berbasis VSTest.

MSTest dan NUnit mendukung format filter yang sama bahkan saat berjalan dengan Microsoft.Testing.Platform.

xUnit.net, tidak mendukung format filter yang sama saat berjalan dengan Microsoft.Testing.Platform. Anda harus bermigrasi dari filter berbasis VSTest ke dukungan filter baru di xunit.v3, yang disediakan menggunakan opsi baris perintah berikut.

xUnit.net pengaturan khusus:

  • --filter-class
  • --filter-not-class
  • --filter-method
  • --filter-not-method
  • --filter-namespace
  • --filter-not-namespace
  • --filter-trait
  • --filter-not-trait
  • --filter-query

Untuk informasi selengkapnya, lihat Dokumentasi Microsoft.Testing.Platform untuk xUnit.net dan Bahasa Filter Kueri untuk xUnit.net.

--logger

Apa yang biasanya disebut sebagai "pencatat" di VSTest disebut sebagai "reporter" di Microsoft.Testing.Platform. Di Microsoft.Testing.Platform, pencatatan secara eksplisit hanya untuk tujuan diagnosis.

Mirip dengan --collect, --logger adalah titik ekstensibilitas umum di VSTest untuk logger apa pun (atau, dalam konteks Microsoft.Testing.Platform, reporter apa pun). Setiap reporter Microsoft.Testing.Platform bebas untuk menambahkan opsi baris perintahnya sendiri, dan dengan demikian tidak ada opsi baris perintah terpusat seperti VSTest --logger.

Salah satu pencatat VSTest yang sangat umum digunakan adalah pencatat TRX. Logger ini biasanya digunakan sebagai berikut:

dotnet test --logger trx

Dengan Microsoft.Testing.Platform, perintah menjadi:

dotnet test --report-trx

Penting

Untuk menggunakan --report-trx, Anda harus menginstal paket NuGet Microsoft.Testing.Extensions.TrxReport.

Penting

Seperti yang dijelaskan sebelumnya, saat menggunakan Microsoft.Testing.Platform dengan dotnet test yang berbasis VSTest, diperlukan tambahan -- sebelum argumen yang dimaksudkan untuk diteruskan ke platform. Jadi, ini menjadi dotnet test -- --report-trx.

--settings

VSTest --settings digunakan untuk menentukan file RunSettings untuk uji coba. RunSettings tidak didukung oleh inti Microsoft.Testing.Platform dan digantikan oleh file konfigurasi yang lebih modern testconfig.json . Namun, MSTest dan NUnit masih mendukung RunSettings lama saat menjalankan Microsoft.Testing.Platform dan --settings masih didukung.

vstest.console.exe

Jika Anda menggunakan vstest.console.exe secara langsung, sebaiknya ganti dengan perintah dotnet test.

Eksplorasi Uji

Saat menggunakan Visual Studio atau Visual Studio Code Test Explorer, Anda mungkin perlu mengaktifkan dukungan untuk Microsoft.Testing.Platform.

Visual Studio

Visual Studio Test Explorer mendukung Microsoft.Testing.Platform yang dimulai dengan versi 17.14. Jika Anda menggunakan versi yang lebih lama, Anda mungkin perlu memperbarui Visual Studio ke versi terbaru.

Visual Studio Code

Visual Studio Code dengan C# DevKit mendukung Microsoft.Testing.Platform.

Azure DevOps

Saat menggunakan tugas Azure DevOps, Anda mungkin perlu memperbarui alur untuk menggunakan Microsoft.Testing.Platform, bergantung pada tugas mana yang Anda gunakan.

Tugas VSTest

Jika Anda menggunakan tugas VSTest di Azure DevOps, Anda dapat menggantinya dengan tugas .NET Core.

Aktivitas .NET Core CLI

  • Jika Anda telah meneruskan arguments kustom ke tugas, ikuti panduan yang sama untuk migrasi dotnet test.

  • Jika Anda menggunakan tugas DotNetCoreCLI tanpa secara aktif menggunakan pengalaman Microsoft.Testing.Platform untuk .NET 10 SDK dan yang lebih baru melalui global.json file, Anda perlu mengatur tugas arguments untuk mengarahkan dengan benar ke direktori hasil seperti sebelumnya, serta laporan TRX yang diminta. Contohnya:

    - task: DotNetCoreCLI@2
      displayName: Run unit tests
      inputs:
        command: 'test'
        arguments: '-- --report-trx --results-directory $(Agent.TempDirectory)