Bagikan melalui


Membuat ekstensi kustom

Artikel ini ditujukan untuk pengembang yang membangun kerangka kerja atau ekstensi pengujian kustom untuk Microsoft.Testing.Platform.

Nota

Untuk kode sampel lengkap, lihat TestingPlatformExamples di repositori Microsoft Test Framework.

Ringkasan titik ekstensi

Poin ekstensi Dalam/Di Luar Proses Kegunaan
ITestFramework Dalam proses Ekstensi wajib yang satu-satunya. Menemukan dan menjalankan pengujian.
IDataConsumer Dalam proses Berlangganan dan memproses data pengujian dari bus pesan.
ITestSessionLifetimeHandler Dalam proses Menjalankan kode sebelum dan sesudah sesi pengujian.
ITestApplicationLifecycleCallbacks Dalam proses Menjalankan kode di awal dan sangat akhir dari host pengujian.
ICommandLineOptionsProvider Both Menambahkan opsi baris perintah kustom.
ITestHostEnvironmentVariableProvider Di luar proses Mengatur variabel lingkungan sebelum host pengujian dimulai.
ITestHostProcessLifetimeHandler Di luar proses Mengamati proses host pengujian secara eksternal.

Ekstensi perangkat lunak dalam proses vs ekstensi perangkat lunak di luar proses

Ekstensi dikategorikan ke dalam dua jenis:

  • Ekstensi dalam-proses berjalan di dalam proses host pengujian, bersama dengan kerangka kerja pengujian. Daftarkan melalui builder.TestHost:

    var builder = await TestApplication.CreateBuilderAsync(args);
    builder.TestHost.AddXXX(/* ... */);
    
  • Ekstensi di luar proses berjalan dalam proses terpisah yang mengamati host pengujian. Daftarkan melalui builder.TestHostControllers:

    var builder = await TestApplication.CreateBuilderAsync(args);
    builder.TestHostControllers.AddXXX(/* ... */);
    

Ekstensi di luar proses diperlukan saat:

  • Anda perlu mengatur variabel lingkungan sebelum host pengujian dimulai.
  • Anda perlu memantau host pengujian secara eksternal karena kode pengguna mungkin crash atau menggantung proses.

Ketika ekstensi di luar proses terdaftar, platform memulai proses kedua secara otomatis.

Antarmuka IExtension

Semua titik perluasan mewarisi dari IExtension, yang menyediakan identifikasi dan pilihan ikut serta/pilihan keluar:

public interface IExtension
{
    string Uid { get; }
    string Version { get; }
    string DisplayName { get; }
    string Description { get; }
    Task<bool> IsEnabledAsync();
}
  • Uid: Pengidentifikasi unik untuk ekstensi. Pilih nilai unik untuk menghindari konflik.
  • Version: Versi ekstensi, menggunakan penerapan versi semantik.
  • DisplayName: Nama yang mudah digunakan yang muncul di log dan --info output.
  • Description: Deskripsi yang muncul dalam --info output.
  • IsEnabledAsync(): Kembalikan false untuk mengecualikan ekstensi dari sesi. Biasanya keputusan didasarkan pada konfigurasi atau opsi baris perintah.
  • Membangun kerangka kerja pengujian: Membuat implementasi kustom ITestFramework , menangani permintaan, dan melaporkan hasil pengujian.
  • Membangun ekstensi: Membuat ekstensi dalam proses dan di luar proses seperti konsumen data, penangan sesi, dan monitor proses.
  • VSTest Bridge: Menyederhanakan migrasi kerangka kerja pengujian berbasis VSTest yang ada ke Microsoft.Testing.Platform.
  • Kemampuan: Mendeklarasikan dan mengkueri kerangka kerja dan kemampuan ekstensi.
  • Services: konfigurasi akses, pencatatan log, bus pesan, dan layanan platform lainnya.