Bagikan melalui


Siklus hidup MSTest

MSTest menyediakan siklus hidup yang terdefinisi dengan baik untuk kelas pengujian dan metode pengujian, memungkinkan operasi penyiapan dan teardown dilakukan pada berbagai tahap proses eksekusi pengujian. Siklus hidup dapat dikelompokkan ke dalam tiga tahap berikut:

  • Siklus hidup tingkat perakitan
  • Siklus hidup kelas
  • Siklus hidup tingkat pengujian

Eksekusi peristiwa siklus hidup terjadi dari tingkat tertinggi (rakitan) ke tingkat terendah (metode pengujian). Urutan eksekusi adalah sebagai berikut:

  1. Inisialisasi Perakitan
  2. Inisialisasi Kelas (untuk setiap kelas pengujian)
  3. Inisialisasi pengujian (untuk setiap metode pengujian)
  4. Uji Eksekusi
  5. Pembersihan Pengujian (untuk setiap metode pengujian)
  6. Pembersihan Kelas (untuk setiap kelas pengujian)
  7. Pembersihan Unit Perakitan

Siklus Hidup Tingkat Perakitan

Siklus hidup perakitan menjelaskan siklus hidup seluruh perakitan, yang mencakup semua kelas dan metode pengujian. Untuk mengelola siklus hidup perakitan, MSTest menyediakan atribut AssemblyInitialize dan AssemblyCleanup . Untuk mempelajari selengkapnya tentang atribut ini, lihat dokumentasi AssemblyInitialize dan AssemblyCleanup .

Siklus Hidup tingkat kelas

Siklus hidup kelas pengujian mengacu pada siklus hidup kelas pengujian individual dalam perakitan dan dapat diimplementasikan menggunakan atribut ClassInitialize dan ClassCleanup . Atribut ini memungkinkan Anda menentukan metode penyiapan dan teardown yang dijalankan sebelum dan sesudah semua pengujian di kelas. Untuk informasi selengkapnya tentang atribut ini, lihat dokumentasi ClassInitialize dan ClassCleanup . Siklus hidup tingkat kelas hanya dijalankan sekali per kelas, terlepas dari jumlah pengujian di kelas.

Siklus Hidup Tingkat Pengujian

Siklus tingkat pengujian diimplementasikan pada setiap metode pengujian. Untuk pengujian berparameter, setiap set parameter diperlakukan sebagai metode pengujian terpisah, dan siklus hidup dijalankan untuk setiap set parameter. Siklus hidup tingkat pengujian dapat dikelompokkan ke dalam penyiapan, eksekusi, dan pembersihan, dengan penyiapan dan pembersihan yang dapat diimplementasikan dengan berbagai cara.

Pengaturan

Fase penyiapan siklus hidup tingkat pengujian bertanggung jawab untuk menyiapkan lingkungan pengujian sebelum eksekusi setiap metode pengujian. Ini dapat dicapai menggunakan TestInitialize atribut atau dengan menerapkan konstruktor di kelas pengujian. Dalam kasus pewarisan, eksekusi TestInitialize metode mengikuti urutan dari kelas dasar ke kelas turunan. Jika kelas pengujian mengimplementasikan konstruktor, kelas tersebut dijalankan sebelum TestInitialize metode . Untuk mempelajari selengkapnya tentang TestInitialize atribut , lihat dokumentasi atribut tingkat pengujian .

Nota

Tidak seperti konstruktor kelas, TestInitialize metode dapat berupa asinkron dan juga mendukung penggunaan atribut seperti TimeoutAttribute.

Eksekusi

Fase eksekusi adalah fase di mana metode pengujian aktual dijalankan. Jika metode pengujian mengembalikan Tugas atau ValueTask, metode pengujian akan ditunggu.

Peringatan

Dalam kasus metode pengujian asinkron, tidak ada SynchronizationContext yang disediakan. Ini tidak berlaku untuk UITestMethod pengujian pada UWP dan WinUI karena berjalan pada utas UI yang memiliki SynchronizationContext.

Pembersihan

Fase pembersihan siklus hidup tingkat pengujian bertanggung jawab untuk membersihkan lingkungan pengujian setelah eksekusi setiap metode pengujian. Ini dapat dicapai menggunakan TestCleanup atribut atau dengan mengimplementasikan IDisposable/IAsyncDisposable antarmuka di kelas pengujian. Jika kelas pengujian mengimplementasikan IDisposable atau IAsyncDisposable, metodenya Dispose/DisposeAsync dijalankan setelah TestCleanup metode . Dalam kasus pewarisan, eksekusi TestCleanup metode mengikuti urutan dari kelas turunan ke kelas dasar. Untuk mempelajari selengkapnya tentang TestInitialize atribut , lihat dokumentasi atribut tingkat pengujian .

Pesanan

Urutan lengkap siklus hidup tingkat pengujian adalah sebagai berikut:

  1. Membuat objek kelas pengujian
  2. Atur TestContext properti jika ada
  3. Jalankan TestInitialize (jika diimplementasikan)
  4. Pelaksanaan metode pengujian
  5. Perbarui TestContext dengan hasil pengujian (seperti Outcome properti)
  6. Jalankan TestCleanup jika diimplementasikan
  7. Jalankan DisposeAsync jika diimplementasikan
  8. Jalankan Dispose jika telah diimplementasikan