Bagikan melalui


Gambaran umum Microsoft.Testing.Platform

Microsoft.Testing.Platform adalah alternatif ringan dan portabel untuk VSTest untuk menjalankan pengujian di semua konteks, termasuk alur integrasi berkelanjutan (CI), CLI, Visual Studio Test Explorer, dan VS Code Text Explorer. Microsoft.Testing.Platform disematkan langsung dalam proyek pengujian Anda, dan tidak ada dependensi aplikasi lain, seperti vstest.console atau dotnet test diperlukan untuk menjalankan pengujian Anda.

Microsoft.Testing.Platformsumber terbuka. Anda dapat menemukan Microsoft.Testing.Platform kode di repositori GitHub microsoft/testfx .

Pilar Microsoft.Testing.Platform

Platform pengujian baru ini dibangun berdasarkan pengalaman tim Pengujian Pengalaman Pengembang .NET dan bertujuan untuk mengatasi tantangan yang dihadapi sejak rilis .NET Core pada tahun 2016. Meskipun ada tingkat kompatibilitas tinggi antara .NET Framework dan .NET Core/.NET, beberapa fitur utama seperti plugin-system dan faktor bentuk baru yang mungkin dari kompilasi .NET telah membuatnya kompleks untuk berevolusi atau sepenuhnya mendukung fitur runtime baru dengan arsitektur platform VSTest saat ini.

Faktor pendorong utama untuk evolusi platform pengujian baru dirinci dalam hal berikut:

  • Determinisme: Memastikan bahwa menjalankan pengujian yang sama dalam konteks yang berbeda (lokal, CI) akan menghasilkan hasil yang sama. Runtime baru tidak bergantung pada refleksi atau fitur runtime .NET dinamis lainnya untuk mengoordinasikan eksekusi pengujian.

  • Transparansi runtime: Runtime pengujian tidak mengganggu kode kerangka kerja pengujian, itu tidak membuat konteks terisolasi seperti AppDomain atau AssemblyLoadContext, dan tidak menggunakan pemecah refleksi atau perakitan kustom.

  • Pendaftaran ekstensi kompilasi waktu: Ekstensi, seperti kerangka kerja pengujian dan ekstensi dalam/di luar proses, didaftarkan selama waktu kompilasi untuk memastikan determinisme dan untuk memfasilitasi deteksi inkonsistensi.

  • Dependensi nol: Inti platform adalah satu rakitan .NET, Microsoft.Testing.Platform.dll, yang tidak memiliki dependensi selain runtime yang didukung.

  • Dapat dihosting: Runtime pengujian dapat dihosting di aplikasi .NET apa pun. Meskipun aplikasi konsol umumnya digunakan untuk menjalankan pengujian, Anda dapat membuat aplikasi pengujian di semua jenis aplikasi .NET. Ini memungkinkan Anda menjalankan pengujian dalam konteks khusus, seperti perangkat atau browser, di mana mungkin ada batasan.

  • Mendukung semua faktor formulir .NET: Mendukung faktor formulir .NET saat ini dan yang akan datang, termasuk AOT Asli.

  • Performant: Menemukan keseimbangan yang tepat antara fitur dan titik ekstensi untuk menghindari kembungnya runtime dengan kode non-fundamental. Platform pengujian baru dirancang untuk "mengatur" uji coba, daripada memberikan detail implementasi tentang cara melakukannya.

  • Cukup dapat diperluas: Platform baru dibangun di atas titik ekstensibilitas untuk memungkinkan penyesuaian maksimum eksekusi runtime. Ini memungkinkan Anda untuk mengonfigurasi host proses pengujian, mengamati proses pengujian, dan menggunakan informasi dari kerangka kerja pengujian dalam proses host pengujian.

  • Penyebaran modul tunggal: Fitur hostabilitas memungkinkan model penyebaran modul tunggal, di mana satu hasil kompilasi dapat digunakan untuk mendukung semua titik ekstensibilitas, baik di luar proses maupun dalam proses, tanpa perlu mengirim modul yang dapat dieksekusi yang berbeda.

Kerangka kerja pengujian yang didukung

  • MSTest. Di MSTest, dukungan Microsoft.Testing.Platform dilakukan melalui pelari MSTest.
  • NUnit. Di NUnit, dukungan Microsoft.Testing.Platform dilakukan melalui pelari NUnit.
  • xUnit.net: Dalam xUnit.net, dukungan Microsoft.Testing.Platform dilakukan melalui xUnit.net runner.
  • TUnit: sepenuhnya dibangun di atas Microsoft.Testing.Platform, untuk informasi selengkapnya, lihat Dokumentasi TUnit

Menjalankan dan men-debug pengujian

Microsoft.Testing.Platform proyek pengujian dibangun sebagai executable yang dapat dijalankan (atau di-debug) secara langsung. Tidak ada pengujian tambahan yang menjalankan konsol atau perintah. Aplikasi keluar dengan kode keluar bukan nol jika ada kesalahan, seperti biasanya dengan sebagian besar executable. Untuk informasi selengkapnya tentang kode keluar yang diketahui, lihat Kode keluar Microsoft.Testing.Platform.

Penting

Secara default, Microsoft.Testing.Platform mengumpulkan telemetri. Untuk informasi selengkapnya dan opsi untuk menolak, lihat Telemetri Microsoft.Testing.Platform.

Menerbitkan proyek pengujian menggunakan dotnet publish dan menjalankan aplikasi secara langsung adalah cara lain untuk menjalankan pengujian Anda. Misalnya, menjalankan ./Contoso.MyTests.exe. Dalam beberapa skenario juga layak digunakan dotnet build untuk menghasilkan executable, tetapi mungkin ada kasus tepi yang perlu dipertimbangkan, seperti Native AOT.

Menggunakan dotnet run

Perintah dotnet run dapat digunakan untuk membangun dan menjalankan proyek pengujian Anda. Ini adalah yang paling mudah, meskipun kadang-kadang paling lambat, cara untuk menjalankan tes Anda. Penggunaan dotnet run praktis saat Anda mengedit dan menjalankan pengujian secara lokal, karena memastikan bahwa proyek pengujian dibangun kembali saat diperlukan. dotnet run juga akan secara otomatis menemukan proyek di folder saat ini.

dotnet run --project Contoso.MyTests

Untuk informasi selengkapnya tentang dotnet run, lihat dotnet run.

Menggunakan dotnet exec

Perintah dotnet exec atau dotnet digunakan untuk menjalankan (atau menjalankan) proyek pengujian yang sudah dibangun, ini adalah alternatif untuk menjalankan aplikasi secara langsung. dotnet exec memerlukan jalur ke dll proyek pengujian bawaan.

dotnet exec Contoso.MyTests.dll

or

dotnet Contoso.MyTests.dll

Catatan

Menyediakan jalur ke proyek pengujian yang dapat dieksekusi (*.exe) menghasilkan kesalahan:

Error:
  An assembly specified in the application dependencies manifest
  (Contoso.MyTests.deps.json) has already been found but with a different
  file extension:
    package: 'Contoso.MyTests', version: '1.0.0'
    path: 'Contoso.MyTests.dll'
    previously found assembly: 'S:\t\Contoso.MyTests\bin\Debug\net8.0\Contoso.MyTests.exe'

Untuk informasi selengkapnya tentang dotnet exec, lihat dotnet exec.

Menggunakan dotnet test

Microsoft.Testing.Platform menawarkan lapisan kompatibilitas dengan vstest.console.exe dan dotnet test memastikan Anda dapat menjalankan pengujian seperti sebelumnya sambil mengaktifkan skenario eksekusi baru.

dotnet test Contoso.MyTests.dll

Opsi

Daftar di bawah ini hanya menjelaskan opsi platform. Untuk melihat opsi tertentu yang dibawa oleh setiap ekstensi, lihat halaman dokumentasi ekstensi atau gunakan --help opsi .

  • --diagnostic

Mengaktifkan pembuatan log diagnostik. Tingkat log default adalah Trace. File ditulis dalam direktori output dengan format nama berikut, log_[MMddHHssfff].diag.

  • --diagnostic-filelogger-synchronouswrite

Memaksa pencatat file bawaan untuk menulis log secara sinkron. Berguna untuk skenario di mana Anda tidak ingin kehilangan entri log apa pun (jika proses crash). Ini memperlambat eksekusi pengujian.

  • --diagnostic-output-directory

Direktori output pengelogan diagnostik, jika tidak ditentukan, file dihasilkan dalam direktori TestResults default.

  • --diagnostic-output-fileprefix

Awalan untuk nama file log. Default ke "log_".

  • --diagnostic-verbosity

Menentukan tingkat verbositas saat sakelar --diagnostic digunakan. Nilai yang tersedia adalah Trace, , InformationDebug, Warning, Error, atau Critical.

  • --help

Mencetak deskripsi cara menggunakan perintah.

  • -ignore-exit-code

Memungkinkan beberapa kode keluar bukan nol diabaikan, dan sebaliknya dikembalikan sebagai 0. Untuk informasi selengkapnya, lihat Mengabaikan kode keluar tertentu.

  • --info

Menampilkan informasi tingkat lanjut tentang Aplikasi Uji .NET seperti:

  • Platform.
  • Lingkungan.
  • Setiap penyedia baris perintah terdaftar, seperti, , name, versiondescription dan options.
  • Setiap alat terdaftar, seperti, , command, name, versiondescription, dan semua penyedia baris perintah.

Fitur ini digunakan untuk memahami ekstensi yang akan mendaftarkan opsi baris perintah yang sama atau perubahan opsi yang tersedia antara beberapa versi ekstensi (atau platform).

  • --list-tests

Mencantumkan pengujian yang tersedia. Pengujian tidak akan dijalankan.

  • --minimum-expected-tests

Menentukan jumlah minimum pengujian yang diharapkan untuk dijalankan. Secara default, setidaknya satu pengujian diharapkan berjalan.

  • --results-directory

Direktori tempat hasil pengujian akan ditempatkan. Jika tidak ada, direktori yang ditentukan akan dibuat. Defaultnya ada TestResults di direktori yang berisi aplikasi pengujian.

Integrasi MSBuild

Paket NuGet Microsoft.Testing.Platform.MSBuild menyediakan berbagai integrasi untuk Microsoft.Testing.Platform dengan MSBuild:

  • Dukungan untuk dotnet test. Untuk informasi selengkapnya, lihat integrasi pengujian dotnet.
  • Dukungan untuk ProjectCapability diperlukan oleh Visual Studio dan Visual Studio Code Test Explorers.
  • Pembuatan otomatis titik masuk (Main metode).
  • Pembuatan otomatis file konfigurasi.

Catatan

Integrasi ini bekerja dengan cara transitif (proyek yang mereferensikan proyek lain yang merujuk paket ini akan berperilaku seolah-olah mereferensikan paket) dan dapat dinonaktifkan melalui IsTestingPlatformApplication properti MSBuild.

Lihat juga