Bagikan melalui


Pengujian dengan 'dotnet test'

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 test dan 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.

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.

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 test mode VSTest, Anda harus menggunakan Microsoft.Testing.Platform.MSBuild, lewati opsi baris perintah khusus MTP setelah tambahan --, dan atur TestingPlatformDotnetTestSupport ke true.
  • 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 dotnet.config file ke akar repositori atau solusi.

[dotnet.test.runner]
name = "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>