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.
Artikel ini memberikan wawasan tentang dotnet test perintah CLI, termasuk kompatibilitas riwayatnya dengan VSTest dan Microsoft.Testing.Platform (MTP).
dotnet test Perintah beroperasi dalam dua mode utama:
- Mode VSTest: Ini adalah mode default untuk
dotnet testdan merupakan satu-satunya mode yang tersedia sebelum .NET 10 SDK. Ini terutama dirancang untuk VSTest tetapi juga dapat menjalankan pengujian Microsoft.Testing.Platform melalui paket NuGet Microsoft.Testing.Platform.MSBuild . - Mode Microsoft.Testing.Platform : Diperkenalkan dengan .NET 10 SDK, mode ini secara eksklusif mendukung aplikasi pengujian yang dibangun dengan Microsoft.Testing.Platform.
Petunjuk / Saran
Untuk referensi CLI, lihat dotnet test.
Mode VSTest dari dotnet test
Untuk waktu yang lama, VSTest adalah satu-satunya platform pengujian di .NET. Akibatnya, dotnet test dirancang secara eksklusif untuk VSTest, dengan semua opsi baris perintah yang disesuaikan dengan VSTest.
Proses ini melibatkan pemanggilan VSTest target MSBuild, yang memicu target internal lainnya untuk berjalan dan pada akhirnya berjalan vstest.console. Semua dotnet test opsi baris perintah diterjemahkan ke yang setara di vstest.console.
Menjalankan proyek MTP dengan mode VSTest
dotnet test dirancang untuk menjalankan proyek VSTest dalam mode VSTest. Namun, Anda dapat menjalankan proyek MTP dalam dotnet test mode VSTest dengan menggunakan paket Microsoft.Testing.Platform.MSBuild . Dari perspektif pengguna, dukungan ini diaktifkan dengan mengatur TestingPlatformDotnetTestSupport properti MSBuild ke true ( false secara default karena alasan kompatibilitas mundur). Ketika properti ini diatur ke true, Microsoft.Testing.Platform.MSBuild mengubah VSTest perilaku target, mengalihkannya ke panggilan InvokeTestingPlatform.
InvokeTestingPlatform adalah target MSBuild yang disertakan dalam Microsoft.Testing.Platform.MSBuild yang bertanggung jawab untuk menjalankan aplikasi pengujian MTP dengan benar sebagai executable. Opsi baris perintah khusus VSTest, seperti --logger, diabaikan secara diam-diam dalam mode ini. Untuk menyertakan argumen khusus MTP, seperti --report-trx, Anda harus menambahkannya setelah tambahan --. Contohnya, dotnet test -- --report-trx. Dalam MTP 1.9, peringatan dengan kode MTP0001 dihasilkan ketika argumen yang diabaikan secara diam-diam terdeteksi.
Nota
MSTest dan NUnit menggunakan paket Microsoft.Testing.Extensions.VSTestBridge . Dengan mengatur EnableMSTestRunner atau EnableNUnitRunner (yang memungkinkan Microsoft.Testing.Platform), proyek pengujian Anda akan mendukung VSTest dan Microsoft.Testing.Platform.
Dalam skenario itu, jika Anda menggunakan mode dotnet test VSTest dan tidak mengatur TestingPlatformDotnetTestSupport ke true, Anda pada dasarnya menggunakan VSTest sepenuhnya, seakan-akan EnableMSTestRunner dan EnableNUnitRunner tidak diatur ke true.
Nota
Sangat disarankan untuk mengatur properti TestingPlatformDotnetTestSupport di Directory.Build.props. Ini memastikan bahwa Anda tidak perlu menambahkannya ke setiap file proyek pengujian satu per satu. Selain itu, ini mencegah risiko memperkenalkan proyek pengujian baru yang tidak mengatur properti ini, yang dapat mengakibatkan solusi di mana beberapa proyek menggunakan VSTest sementara yang lain menggunakan Microsoft.Testing.Platform. Konfigurasi campuran ini mungkin tidak berfungsi dengan benar dan merupakan skenario yang tidak didukung.
Penting
Menjalankan proyek MTP dalam mode VSTest dianggap warisan untuk mendukung pengalaman yang lebih baru di .NET 10 SDK. Dukungan berjalan dalam mode ini akan dihapus di Microsoft.Testing.Platform versi 2 jika dijalankan dengan .NET 10 SDK. Dukungan tetap tersedia untuk .NET 9 SDK dan yang lebih lama untuk memastikan kompatibilitas dengan versi sebelumnya.
Untuk informasi selengkapnya, lihat Migrasi ke mode MTP dari dotnet test.
Daftar berikut menguraikan opsi dotnet test baris perintah perintah dalam mode VSTest yang didukung oleh Microsoft.Testing.Platform. Opsi ini khusus untuk proses build dan tidak diteruskan ke VSTest, itulah sebabnya mereka bekerja dengan MTP.
-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>
Petunjuk / Saran
Anda dapat menyesuaikan argumen baris perintah aplikasi pengujian Anda melalui TestingPlatformCommandLineArguments properti MSBuild:
<PropertyGroup>
...
<TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>
Untuk informasi lebih lanjut mengenai menjalankan proyek MTP secara khusus dalam mode VSTest, dotnet test silakan lihat Gunakan Microsoft.Testing.Platform dengan mode VSTest dari dotnet test.
Detail teknis tingkat lanjut
Dalam dotnet test mode VSTest, -- digunakan untuk menunjukkan argumen RunSettings. Awalnya, dotnet test dirancang untuk meneruskan argumen tersebut sebagai properti MSBuild yang disebut VSTestCLIRunSettings. Oleh karena itu, saat menjalankan aplikasi pengujian MTP dalam mode VSTest, kami menggunakan kembali nilai VSTestCLIRunSettings untuk mewakili "argumen aplikasi".
Mencampur VSTest dan Microsoft.Testing.Platform (MTP)
Saat menjalankan dotnet test dalam mode VSTest, disarankan untuk menghindari menggabungkan VSTest dan Microsoft.Testing.Platform dalam solusi yang sama.
Skenario ini tidak didukung secara resmi, dan Anda harus mengetahui hal-hal berikut:
- Opsi baris perintah khusus VSTest hanya akan berlaku untuk proyek VSTest dan bukan untuk aplikasi pengujian MTP.
- Opsi baris perintah khusus MTP yang disediakan setelah
--akan diperlakukan sebagai argumen RunSettings untuk proyek VSTest.
Intisari Utama
- Untuk menjalankan aplikasi pengujian MTP dalam
dotnet testmode VSTest, Anda harus menggunakanMicrosoft.Testing.Platform.MSBuild, lewati opsi baris perintah khusus MTP setelah tambahan--, dan aturTestingPlatformDotnetTestSupportketrue. - Opsi baris perintah berorientasi VSTest diabaikan secara diam-diam.
Karena masalah ini, .NET telah memperkenalkan mode baru dotnet test yang dirancang khusus untuk MTP. Kami mendorong pengguna MTP untuk beralih dari mode VSTest dotnet test ke mode baru dengan .NET 10 SDK.
Mode dari Microsoft.Testing.Platform (MTP) dotnet test
Untuk mengatasi masalah yang dihadapi saat berjalan dotnet test dengan MTP dalam mode VSTest, .NET memperkenalkan mode baru di .NET 10 SDK yang dirancang khusus untuk MTP.
Untuk mengaktifkan mode ini, tambahkan konfigurasi berikut ke file Anda global.json :
{
"test": {
"runner": "Microsoft.Testing.Platform"
}
}
Penting
Pengalaman dotnet test untuk MTP hanya didukung di Microsoft.Testing.Platform versi 1.7 dan yang lebih baru.
Karena mode ini dirancang khusus untuk Microsoft.Testing.Platform, baik TestingPlatformDotnetTestSupport maupun tambahan -- tidak diperlukan.
Penting
Mode ini hanya kompatibel dengan Microsoft.Testing.Platform versi 1.7.0 dan yang lebih baru.
Penting
Jika proyek pengujian Anda mendukung VSTest tetapi tidak mendukung MTP, kesalahan akan dihasilkan.
Petunjuk / Saran
Anda dapat menyesuaikan argumen baris perintah aplikasi pengujian Anda melalui TestingPlatformCommandLineArguments properti MSBuild:
<PropertyGroup>
...
<TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>
Bermigrasi ke mode MTP dari dotnet test
Pengguna MTP yang menggunakan mode VSTest di dotnet test memerlukan beberapa langkah untuk bermigrasi ke pengalaman yang lebih baru di dotnet test:
- Tambahkan bagian
testke file Andaglobal.json, seperti yang ditunjukkan di atas. - Hapus
TestingPlatformDotnetTestSupportproperti MSBuild, karena tidak lagi diperlukan. - Hapus
TestingPlatformCaptureOutputdanTestingPlatformShowTestsFailureproperti MSBuild, karena tidak lagi digunakan oleh properti barudotnet test. - Hapus tambahan
--, misalnyadotnet test -- --report-trxharus menjadidotnet test --report-trx. - Jika meneruskan solusi tertentu (atau direktori yang berisi solusi), misalnya,
dotnet test MySolution.sln, ini harus menjadidotnet test --solution MySolution.sln. - Jika meneruskan proyek tertentu (atau direktori yang berisi proyek), misalnya,
dotnet test MyProject.csproj, ini akan menjadidotnet test --project MyProject.csproj. - Jika meneruskan dll tertentu, misalnya,
dotnet test path/to/UnitTests.dll, ini akan menjadidotnet test --test-modules path/to/UnitTests.dll. Perhatikan bahwa--test-modulesjuga mendukung globbing.