Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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
argumentskustom ke tugas, ikuti panduan yang sama untuk migrasidotnet test.Jika Anda menggunakan tugas DotNetCoreCLI tanpa secara aktif menggunakan pengalaman Microsoft.Testing.Platform untuk .NET 10 SDK dan yang lebih baru melalui
global.jsonfile, Anda perlu mengatur tugasargumentsuntuk 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)