PENGUJIAN UNIT di Asp.Net: Tutorial Lengkap
โก Ringkasan Cerdas
Pengujian unit aplikasi ASP.NET di Visual Studio dimulai dengan Proyek Pengujian Unit, menghubungkan referensi ke proyek target, menambahkan atribut MSTest [TestClass] dan [TestMethod], dan memanggil metode Assert untuk membuktikan bahwa kelas berperilaku sesuai desain.
Pengujian adalah aspek penting dari bahasa pemrograman apa pun. pengujian Pengembangan aplikasi ASP.NET dimungkinkan dengan bantuan Visual Studio.
Visual Studio digunakan untuk membuat kode pengujian. Visual Studio juga digunakan untuk menjalankan kode pengujian untuk aplikasi ASP.NET. Dengan cara ini, menjadi mudah untuk memeriksa kesalahan apa pun dalam aplikasi ASP.NET. Di Visual Studio, modul pengujian hadir dengan fungsionalitas bawaan. Kita dapat langsung melakukan pengujian untuk proyek ASP.NET.
Pengantar pengujian untuk ASP.NET
Tahap pertama pengujian proyek ASP.NET adalah pengujian tingkat unit. Pengujian ini menguji fungsionalitas aplikasi. Pengujian dilakukan untuk memastikan bahwa aplikasi berperilaku sesuai harapan. Dalam ASP.NET, tugas pertama adalah membuat proyek pengujian di Visual Studio. Proyek pengujian akan berisi kode yang diperlukan untuk menguji aplikasi.
Mari kita perhatikan halaman web di bawah ini. Di halaman tersebut, kita memiliki pesan โGuru99 โ ASP.NETโ ditampilkan. Sekarang, bagaimana kita dapat memastikan bahwa pesan yang benar ditampilkan saat proyek ASP.NET dijalankan? Ini dilakukan dengan menambahkan proyek uji ke solusi ASP.NET (yang digunakan untuk mengembangkan aplikasi berbasis web). Proyek uji ini akan memastikan bahwa pesan yang tepat ditampilkan kepada pengguna.
Mari kita telaah lebih detail sekarang dan lihat bagaimana kita dapat melakukan pengujian di ASP.NET.
Membuat Proyek Pengujian Unit .NET
Sebelum kita membuat proyek pengujian, kita perlu melakukan langkah-langkah tingkat tinggi di bawah ini.
- Gunakan 'DemoAplikasi' kami yang digunakan di bagian sebelumnya. Ini akan menjadi aplikasi kita yang perlu diuji.
- Kita akan menambahkan kelas baru ke DemoApplication. Kelas ini akan berisi string bernama 'Guru99 โ ASP.NET.' String ini akan diuji dalam proyek pengujian kami.
- Terakhir, kita akan membuat proyek pengujian. Proyek ini digunakan untuk menguji aplikasi ASP.NET.
Jadi, mari kita ikuti langkah-langkah tingkat tinggi di atas dan lihat bagaimana cara menerapkan pengujian.
Langkah 1) Pastikan DemoApplication terbuka di Visual Studio.
Langkah 2) Sekarang mari kita tambahkan kelas baru ke DemoApplication. Kelas ini akan berisi string bernama 'Guru99 โ ASP.NET.' String ini akan diuji dalam proyek pengujian kami.
Ikuti langkah di bawah ini untuk menambahkan kelas baru.
- Di Visual Studio, klik kanan 'DemoApplication' di Solution Explorer.
- Pilih opsi Tambah->Kelas dari menu konteks.
Langkah 3) Pada langkah ini,
- Beri nama 'Tutorial.cs' untuk kelas baru.
- Klik tombol 'Tambah' untuk menambahkan file ke Aplikasi Demo.
Sekarang, kelas baru ditambahkan ke file โDemoApplication.โ
Langkah 4) Buka file Tutorial.cs baru dari โDemoApplicationโ. Tambahkan string โGuru99 โ ASP.NET.โ
Untuk membuka berkas, klik dua kali pada file Tutorial.cs di Solution Explorer.
File tersebut akan memiliki beberapa kode default yang sudah ditulis. Jangan repot-repot dengan kode itu, cukup tambahkan baris kode di bawah ini.
namespace DemoApplication { public class Tutorial { public String Name; public Tutorial() { Name = "Guru99 - ASP.Net"; } } }
Code Penjelasan:-
- Variabel Nama bertipe string.
- Terakhir, di dalam konstruktor kelas Tutorial, tetapkan nilai variabel Name. Nilai tersebut ditetapkan ke โGuru99 โ ASP.NETโ
Langkah 5) Sekarang, buka file demo.aspx dan tambahkan baris kode untuk menampilkan teks โGuru99 โ ASP.NET.โ
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <% DemoApplication.Tutorial tp=new DemoApplication.Tutorial();%> <%=tp.Name%> </div> </form> </body> </html>
Code Penjelasan:-
- Baris pertama membuat objek dari kelas 'Tutorial'. Ini adalah langkah pertama saat bekerja dengan kelas dan objek. Nama yang diberikan pada objek tersebut adalah 'tp'.
- Terakhir kita memanggil 'tutorial.cs' dari file demo.aspx. Ini menampilkan nilai variabel Nama.
Ketika Anda menjalankan program di atas dalam Visual Studio, Anda akan mendapatkan keluaran berikut.
Keluaran:-
Dari outputnya, Anda melihat pesan โGuru99 โ ASP.NETโ ditampilkan.
Langkah 6) Sekarang mari kita tambahkan proyek uji kita ke Aplikasi Demo. Ini dilakukan dengan bantuan Visual Studio.
- Klik kanan Solusi โ DemoAplikasi.
- Di menu konteks, pilih opsi 'Proyek Baru'.
Langkah 7) Langkah ini melibatkan penambahan proyek Unit Test ke aplikasi demo.
- Klik pada jenis item sebagai 'Tes' dari panel sebelah kiri.
- Pilih item sebagai 'Proyek Uji Unit' dari daftar, yang muncul di bagian tengah kotak dialog.
- Beri nama untuk proyek uji. Dalam kasus kami, nama yang diberikan adalah 'DemoTest'.
- Terakhir, klik tombol 'OK'.
Anda akhirnya akan melihat proyek DemoTest ditambahkan ke penjelajah solusi. Dengan ini, Anda juga dapat melihat file lain seperti UnitTest1.cs, properti, dll. dihasilkan secara default.
Menjalankan Proyek Uji
Proyek uji yang dibuat di bagian sebelumnya digunakan untuk menguji aplikasi ASP.NET kita. Pada langkah-langkah berikut, kita akan melihat cara menjalankan proyek uji tersebut.
- Langkah pertama adalah menambahkan referensi ke proyek ASP.NET. Langkah ini dilakukan agar proyek pengujian memiliki akses ke proyek ASP.NET.
- Kemudian kami akan menulis kode pengujian kami.
- Terakhir, kami akan menjalankan pengujian menggunakan Visual Studio.
Langkah 1) Untuk menguji Aplikasi Demo kami, proyek pengujian pertama perlu merujuk pada Aplikasi Demo. Tambahkan referensi ke solusi Demo.aspx.
- Klik kanan proyek Uji Demo
- Dari menu pilih opsi Tambah->Referensi.
Langkah 2) Langkah selanjutnya adalah menambahkan referensi ke DemoApplication.
- Pilih opsi Proyek dari sisi kiri kotak dialog
- Klik kotak centang di sebelah DemoApplication
- Klik tombol 'OK'.
Ini akan memungkinkan proyek demotest untuk menguji Aplikasi Demo kami.
Langkah 3) Sekarang saatnya menambahkan kode pengujian ke proyek pengujian kita.
- Untuk melakukan ini, klik dua kali terlebih dahulu pada file UnitTest1 (file UnitTest1 secara otomatis ditambahkan oleh Visual Studio saat proyek Uji dibuat) di Solution Explorer.
- Ini adalah file yang akan dijalankan untuk menguji proyek ASP.NET.
Anda akan melihat kode di bawah ini yang ditambahkan oleh Visual Studio dalam berkas UnitTest1.cs. Ini adalah kode dasar yang dibutuhkan agar proyek pengujian dapat berjalan.
Langkah 4) Langkah selanjutnya adalah menambahkan kode yang digunakan untuk menguji string โGuru99 โ ASP.NET.โ
using System; using Microsoft.VisualStudio.TestTools.UnitTesting; using DemoApplication; namespace DemoTest { [TestClass] public class UnitTest1 { [TestMethod] public void TestMethod1() { Tutorial tp = new Tutorial(); Assert.AreEqual(tp.Name,"Guru99 - ASP.Net"); } } }
- Buat objek baru bernama 'tp' dengan tipe Tutorial
- Metode Assert.AreEqual digunakan di .NET untuk menguji apakah suatu nilai sama dengan sesuatu. Jadi dalam kasus kita, kita membandingkan nilai tp.Name dengan Guru99 โ ASP.NET.
Langkah 5) Sekarang mari kita jalankan proyek pengujian kita. Untuk itu, kita perlu pergi ke opsi menu Test->Run->All Tests.
Keluaran:-
Jendela Explorer pengujian akan muncul di Visual Studio. Ini akan menampilkan hasil di atas dan menampilkan bahwa pengujian berhasil dijalankan di Visual Studio.
Atribut dan Pernyataan MSTest yang Akan Anda Gunakan
The MicrosoftNamespace .VisualStudio.TestTools.UnitTesting menyediakan sejumlah kecil atribut dan pernyataan yang mencakup sebagian besar pengujian unit ASP.NET. Mempelajari hal-hal ini terlebih dahulu akan membuat setiap pengujian selanjutnya lebih mudah dibaca dan dipelihara.
- [Kelas Uji] โ menandai kelas sebagai wadah pengujian. MSTest memindai kelas dengan atribut ini pada saat penemuan.
- [Metode Pengujian] โ menandai metode publik tanpa parameter sebagai pengujian individual. Metode ini mengembalikan void, Task, atau ValueTask.
- [TestInitialize] / [TestCleanup] โ Jalankan sebelum dan sesudah setiap metode pengujian. Gunakan perintah ini untuk membuat dan menghapus pengaturan bersama seperti repositori tiruan atau konteks dalam memori.
- [Inisialisasi Kelas] / [Pembersihan Kelas] โ dijalankan sekali untuk seluruh kelas. Ini berguna ketika pengaturannya mahal, misalnya untuk mengisi basis data pengujian.
- [DataRow] dan [DataTestMethod] โ menyediakan input berparameter sehingga satu metode pengujian mencakup beberapa kasus.
Di dalam setiap metode pengujian, kelas Assert memeriksa hasilnya. Panggilan umum meliputi Assert.AreEqual untuk perbandingan nilai, Assert.IsTrue dan Assert.IsFalse untuk boolean, Assert.IsNull dan Assert.IsNotNull untuk referensi, dan Assert.ThrowsException untuk pengecualian yang diharapkan. Susun setiap pengujian menggunakan pola Arrange, Act, Assert sehingga pengaturan, pemanggilan, dan verifikasi tetap terpisah secara visual. Tata letak ini membuat pengujian yang gagal mudah di-debug karena baris yang gagal hampir selalu adalah Assert tunggal di bagian bawah.
Perbandingan MSTest, NUnit, dan xUnit untuk ASP.NET
Tiga kerangka kerja pengujian mendominasi ekosistem .NET. Masing-masing berjalan di dalam Visual Studio dan terintegrasi dengan dotnet test, sehingga perbedaannya sebagian besar terletak pada gaya, dukungan komunitas, dan perilaku default.
- MSTest โ dikirim oleh Microsoft dan sudah terpasang sebelumnya dengan templat Proyek Pengujian Unit Visual Studio yang digunakan sebelumnya dalam tutorial ini. Ini adalah pengaturan default teraman ketika sebuah tim baru mengenal pengujian unit di Visual Studio. Microsoft tumpukan.
- NUnit โ yang tertua dari ketiganya, awalnya diporting dari JUnitIa menawarkan model batasan yang kaya, pengujian berparameter melalui TestCase dan TestCaseSource, serta dukungan yang matang di setiap versi .NET.
- xUnit.net โ digunakan secara internal oleh tim ASP.NET Core dan Entity Framework Core. Ini menggantikan metode SetUp dengan konstruktor dan IDisposable, mendorong satu kelas pengujian per perilaku, dan menggunakan [Fact] dan [Theory] sebagai pengganti [TestMethod].
Ketiga kerangka kerja tersebut menemukan pengujian melalui atribut, dijalankan melalui perintah dotnet test, dan menghasilkan laporan XML trx atau xUnit yang digunakan oleh pipeline CI seperti Azure DevOps, GitHub Actions, dan Jenkins dapat dikonsumsi secara langsung. Untuk proyek ASP.NET pertama, tetap menggunakan MSTest membuat toolchain tetap sederhana. Tim yang menginginkan parameterisasi yang lebih kaya atau sudah menggunakan ASP.NET Core sering memilih xUnit karena konsistensi dengan framework yang digunakan untuk membangunnya.
Praktik Terbaik untuk Pengujian Unit Aplikasi ASP.NET
Dengan mengikuti serangkaian kebiasaan sederhana, sebuah rangkaian alat akan tetap cepat, andal, dan bermanfaat sepanjang masa proyek ASP.NET.
- Uji satu perilaku per metode. Sebuah pengujian yang menyatakan beberapa hal yang tidak berhubungan akan gagal karena berbagai alasan dan membutuhkan waktu lebih lama untuk memperbaikinya.
- Sebutkan tes setelah maksud. Pola seperti MethodUnderTest_Scenario_ExpectedResult membuat Test Explorer menghasilkan spesifikasi kelas yang mudah dibaca.
- Pisahkan unit dari sistem eksternal. Bungkus panggilan file, jaringan, dan basis data di balik antarmuka dan ganti dengan objek palsu atau tiruan sehingga pengujian tidak mengenai dependensi yang sebenarnya.
- Lakukan pengujian dengan cepat. Usahakan agar seluruh rangkaian pengujian selesai dalam hitungan detik. Pengujian yang lambat akan dilewati, dan pengujian yang dilewati akan menyembunyikan regresi.
- Ikuti tata letak Susun, Bertindak, Tegaskan. Tiga blok pendek dengan baris kosong di antaranya menandakan maksud dan memudahkan untuk menemukan jalur yang bermasalah.
- Jalankan pengujian pada setiap commit. Integrasikan pengujian dotnet ke dalam pipeline CI sehingga pengujian yang gagal akan memblokir penggabungan (merge) alih-alih pengiriman (ship).ping untuk produksi.
- Traccakupan kode k, tetapi jangan mengejarnya. Cakupan pengujian menyoroti jalur yang belum diuji, tetapi angka yang tinggi saja tidak menjamin kualitas. RevLihat apa fungsi sebenarnya dari baris yang hilang.
Jika diterapkan bersama-sama, praktik-praktik ini mengubah proyek DemoTest yang dibangun di atas menjadi cikal bakal sebuah rangkaian pengujian yang menangkap regresi pada setiap perubahan, mendokumentasikan perilaku untuk pengembang di masa mendatang, dan memberikan kepercayaan diri saat melakukan refactoring aplikasi ASP.NET.


















