Hasilkan pengujian unit untuk pengujian fuzz dengan menggunakan IntelliTest
IntelliTest menjelajahi kode .NET Anda untuk menghasilkan data pengujian dan serangkaian pengujian unit. Untuk setiap pernyataan dalam kode, dihasilkan input pengujian yang akan menjalankan pernyataan tersebut. Analisis kasus dilakukan untuk setiap cabang kondisional dalam kode. Misalnya, pernyataan if
, pertegasan, dan semua operasi yang dapat melempar pengecualian dianalisis. Analisis ini digunakan untuk menghasilkan data pengujian untuk pengujian unit berparameter untuk setiap metode Anda, membuat pengujian unit dengan cakupan kode tinggi. Anggap saja sebagai pengujian fuzz cerdas yang memangkas input dan kasus pengujian ke apa yang menjalankan semua cabang logika Anda dan memeriksa pengecualian.
Saat Anda menjalankan IntelliTest, Anda dapat dengan mudah melihat pengujian mana yang gagal dan menambahkan kode yang diperlukan untuk memperbaikinya. Anda dapat memilih pengujian mana yang dihasilkan untuk disimpan ke dalam proyek pengujian untuk menyediakan rangkaian regresi. Saat Anda mengubah kode, jalankan kembali IntelliTest untuk menjaga pengujian yang dihasilkan tetap sinkron dengan perubahan kode Anda.
Ketersediaan dan ekstensi
Perintah menu Buat IntelliTest dan Jalankan IntelliTest:
Hanya tersedia di Edisi Enterprise Visual Studio.
Hanya mendukung kode C# yang menargetkan .NET Framework.
Catatan
Untuk dukungan .NET 6 dengan IntelliTest, Anda dapat menginstal versi Pratinjau Visual Studio Enterprise dan melihat pengumuman .
Dapat diperluas dan mendukung memancarkan pengujian dalam format MSTest, MSTest V2, NUnit, dan xUnit.
Tidak mendukung konfigurasi x64.
Jelajahi: Gunakan IntelliTest untuk menjelajahi kode Anda dan menghasilkan pengujian unit
Untuk menghasilkan pengujian unit, jenis Anda harus publik.
Buka solusi Anda di Visual Studio lalu buka file kelas yang memiliki metode yang ingin Anda uji.
Klik kanan pada metode dan pilih Jalankan IntelliTest untuk menghasilkan pengujian unit untuk kode dalam metode Anda.
IntelliTest menjalankan kode Anda berkali-kali dengan input yang berbeda. Setiap eksekusi diwakili dalam tabel yang menunjukkan data pengujian input dan output atau pengecualian yang dihasilkan.
Untuk menghasilkan pengujian unit untuk semua metode publik di kelas, cukup klik kanan di kelas daripada metode tertentu, lalu pilih Jalankan IntelliTest. Gunakan daftar drop-down di jendela Hasil Eksplorasi untuk menampilkan pengujian unit dan data input untuk setiap metode di kelas.
Untuk pengujian yang lolos, periksa apakah hasil yang dilaporkan di kolom hasil sesuai dengan harapan Anda untuk kode Anda. Untuk pengujian yang gagal, perbaiki kode Anda sebagaimana mewajibkan. Kemudian jalankan kembali IntelliTest untuk memvalidasi perbaikan.
Persist: Simpan pengujian unit sebagai rangkaian regresi
Pilih baris data yang ingin Anda simpan dengan pengujian unit berparameter ke dalam proyek pengujian.
Anda dapat melihat proyek pengujian dan pengujian unit berparameter yang telah dibuat - pengujian unit individual, yang sesuai dengan setiap baris, disimpan dalam file .g.cs dalam proyek pengujian, dan pengujian unit berparameter disimpan dalam file .cs yang sesuai. Anda dapat menjalankan pengujian unit dan melihat hasilnya dari Test Explorer seperti yang Anda lakukan untuk pengujian unit apa pun yang Anda buat secara manual.
Referensi yang diperlukan juga ditambahkan ke proyek pengujian.
Jika kode metode berubah, jalankan kembali IntelliTest untuk menjaga pengujian unit tetap sinkron dengan perubahan.
Bantuan: Gunakan IntelliTest untuk memfokuskan eksplorasi kode
Jika Anda memiliki kode yang lebih kompleks, IntelliTest membantu Anda memfokuskan eksplorasi kode Anda. Misalnya, jika Anda memiliki metode yang memiliki antarmuka sebagai parameter, dan ada lebih dari satu kelas yang mengimplementasikan antarmuka tersebut, IntelliTest menemukan kelas tersebut dan melaporkan peringatan.
Lihat peringatan untuk memutuskan apa yang ingin Anda lakukan.
Setelah Anda menyelidiki kode dan memahami apa yang ingin Anda uji, Anda dapat memperbaiki peringatan untuk memilih kelas mana yang akan digunakan untuk menguji antarmuka.
Pilihan ini ditambahkan ke dalam file PexAssemblyInfo.cs.
[assembly: PexUseType(typeof(Camera))]
Sekarang Anda dapat menjalankan ulang IntelliTest untuk menghasilkan data pengujian dan pengujian unit berparameter hanya menggunakan kelas yang Anda perbaiki.
Tentukan: Gunakan IntelliTest untuk memvalidasi properti kebenaran yang Anda tentukan dalam kode
Tentukan hubungan umum antara input dan output yang Anda inginkan untuk divalidasi oleh pengujian unit yang dihasilkan. Spesifikasi ini dirangkum dalam metode yang terlihat seperti metode pengujian tetapi diukur secara universal. Ini adalah metode pengujian unit berparameter, dan pernyataan apa pun yang Anda buat harus menahan semua nilai input yang mungkin dapat dihasilkan IntelliTest.
T & J
Q: Dapatkah Anda menggunakan IntelliTest untuk kode yang tidak dikelola?
A: Tidak, IntelliTest hanya berfungsi dengan kode terkelola.
Q: Kapan tes yang dihasilkan lulus atau gagal?
A: Ini lolos seperti pengujian unit lainnya jika tidak ada pengecualian yang terjadi. Ini gagal jika ada pernyataan yang gagal, atau jika kode yang sedang diuji melemparkan pengecualian yang tidak tertangani.
Jika Anda memiliki pengujian yang dapat lulus jika pengecualian tertentu dilemparkan, Anda dapat mengatur salah satu atribut berikut berdasarkan persyaratan Anda pada metode pengujian, kelas pengujian, atau tingkat perakitan:
PexAllowedExceptionAttribute
PexAllowedExceptionFromTypeAttribute
PexAllowedExceptionFromTypeUnderTestAttribute
PexAllowedExceptionFromAssemblyAttribute
Q: Dapatkah saya menambahkan asumsi ke pengujian unit berparameter?
A: Ya, gunakan asumsi untuk menentukan data pengujian mana yang tidak diperlukan untuk pengujian unit untuk metode tertentu. Gunakan kelas PexAssume untuk menambahkan asumsi. Misalnya, Anda dapat menambahkan asumsi bahwa variabel lengths
bukanlah null seperti ini:
PexAssume.IsNotNull(lengths);
Jika Anda menambahkan asumsi dan menjalankan ulang IntelliTest, data pengujian yang tidak lagi relevan akan dihapus.
Q: Dapatkah saya menambahkan pernyataan ke pengujian unit berparameter?
A: Ya, IntelliTest akan memeriksa bahwa apa yang Anda tegaskan dalam pernyataan Anda sebenarnya benar ketika menjalankan pengujian unit. Gunakan kelas PexAssert atau API pernyataan yang dilengkapi dengan kerangka kerja pengujian untuk menambahkan pernyataan. Misalnya, Anda dapat menambahkan pernyataan bahwa dua variabel sama.
PexAssert.AreEqual(a, b);
Jika Anda menambahkan pernyataan dan menjalankan ulang IntelliTest, itu akan memeriksa bahwa pernyataan Anda valid dan pengujian gagal jika tidak.
Q: Dapatkah saya menghasilkan pengujian unit berparameter tanpa menjalankan IntelliTest terlebih dahulu?
A: Ya, klik kanan di kelas atau metode, lalu pilih Buat IntelliTest.
Terima format default untuk menghasilkan pengujian Anda, atau ubah bagaimana proyek dan pengujian Anda diberi nama. Anda dapat membuat proyek pengujian baru atau menyimpan pengujian Anda ke proyek yang sudah ada.
Q: Dapatkah saya menggunakan kerangka kerja pengujian unit lain dengan IntelliTest?
J: Ya, ikuti langkah-langkah ini untuk menemukan dan menginstal kerangka kerja lain. Ekstensi kerangka kerja pengujian juga tersedia di Visual Studio Marketplace, misalnya, NUnit Test Generator.
Setelah Anda memulai ulang Visual Studio dan membuka kembali solusi Anda, klik kanan di kelas atau metode, lalu pilih Buat IntelliTest. Pilih kerangka kerja yang terinstal di sini:
Kemudian jalankan IntelliTest untuk menghasilkan pengujian unit individual dalam file .g.cs yang sesuai.
Q: Dapatkah saya mempelajari lebih lanjut tentang bagaimana pengujian dihasilkan?
A: Ya, untuk mendapatkan gambaran umum tingkat tinggi, baca postingan blog ini.