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.

  • ๐Ÿงช Proyek Uji Coba: Tambahkan Proyek Pengujian Unit ke solusi ASP.NET dan referensikan proyek target yang ingin Anda verifikasi.
  • ๏ธ Atribut: Beri tanda pada kelas dengan [TestClass] dan setiap pengujian dengan [TestMethod] agar MSTest dapat menemukannya.
  • โœ… Pernyataan: Gunakan Assert.AreEqual, Assert.IsTrue, dan panggilan serupa untuk menyatakan hasil yang diharapkan dari setiap pengujian.
  • โ–ถ ๏ธ Jalankan Tes: Buka menu Eksekusi Pengujian, lalu Jalankan Semua Pengujian di dalam Visual Studio dan periksa Penjelajah Pengujian untuk hasil yang lulus dan gagal.
  • ๏ธ Pilihan Kerangka Kerja: MSTest, NUnit, dan xUnit semuanya kompatibel dengan dotnet test; MSTest disertakan secara default, sedangkan xUnit lebih disukai untuk ASP.NET Core.
  • ๏ธ Praktek terbaik: Pisahkan unit, ikuti aturan Arrange Act Assert, dan jaga agar seluruh rangkaian tetap cepat sehingga berjalan pada setiap commit.

Pengujian Unit di ASP.NET

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.

Pengantar pengujian untuk ASP.NET

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.

  1. Gunakan 'DemoAplikasi' kami yang digunakan di bagian sebelumnya. Ini akan menjadi aplikasi kita yang perlu diuji.
  2. Kita akan menambahkan kelas baru ke DemoApplication. Kelas ini akan berisi string bernama 'Guru99 โ€“ ASP.NET.' String ini akan diuji dalam proyek pengujian kami.
  3. 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.

Membuat Proyek Pengujian Unit .NET

  1. Di Visual Studio, klik kanan 'DemoApplication' di Solution Explorer.
  2. Pilih opsi Tambah->Kelas dari menu konteks.

Langkah 3) Pada langkah ini,

Membuat Proyek Pengujian Unit .NET

  1. Beri nama 'Tutorial.cs' untuk kelas baru.
  2. 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.

Membuat Proyek Pengujian Unit .NET

File tersebut akan memiliki beberapa kode default yang sudah ditulis. Jangan repot-repot dengan kode itu, cukup tambahkan baris kode di bawah ini.

Membuat Proyek Pengujian Unit .NET

namespace DemoApplication
{
  public class Tutorial
  {
     public String Name;
     public Tutorial()
     {
        Name = "Guru99 - ASP.Net";
     }
  }
}

Code Penjelasan:-

  1. Variabel Nama bertipe string.
  2. 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.โ€

Membuat Proyek Pengujian Unit .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:-

  1. 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'.
  2. 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:-

Membuat Proyek Pengujian Unit .NET

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.

Membuat Proyek Pengujian Unit .NET

  1. Klik kanan Solusi โ€“ DemoAplikasi.
  2. Di menu konteks, pilih opsi 'Proyek Baru'.

Langkah 7) Langkah ini melibatkan penambahan proyek Unit Test ke aplikasi demo.

Membuat Proyek Pengujian Unit .NET

  1. Klik pada jenis item sebagai 'Tes' dari panel sebelah kiri.
  2. Pilih item sebagai 'Proyek Uji Unit' dari daftar, yang muncul di bagian tengah kotak dialog.
  3. Beri nama untuk proyek uji. Dalam kasus kami, nama yang diberikan adalah 'DemoTest'.
  4. 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.

Membuat Proyek Pengujian Unit .NET

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.

Menjalankan Proyek Uji .NET

  1. Klik kanan proyek Uji Demo
  2. Dari menu pilih opsi Tambah->Referensi.

Langkah 2) Langkah selanjutnya adalah menambahkan referensi ke DemoApplication.

Menjalankan Proyek Uji .NET

  1. Pilih opsi Proyek dari sisi kiri kotak dialog
  2. Klik kotak centang di sebelah DemoApplication
  3. 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.

Menjalankan Proyek Uji .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.

Menjalankan Proyek Uji .NET

Langkah 4) Langkah selanjutnya adalah menambahkan kode yang digunakan untuk menguji string โ€œGuru99 โ€“ ASP.NET.โ€

Menjalankan Proyek Uji .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");
   }
 }
}
  1. Buat objek baru bernama 'tp' dengan tipe Tutorial
  2. 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.

Menjalankan Proyek Uji .NET

Keluaran:-

Menjalankan Proyek Uji .NET

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.

  1. 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.
  2. Sebutkan tes setelah maksud. Pola seperti MethodUnderTest_Scenario_ExpectedResult membuat Test Explorer menghasilkan spesifikasi kelas yang mudah dibaca.
  3. 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.
  4. 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.
  5. Ikuti tata letak Susun, Bertindak, Tegaskan. Tiga blok pendek dengan baris kosong di antaranya menandakan maksud dan memudahkan untuk menemukan jalur yang bermasalah.
  6. 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.
  7. 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.

Pertanyaan Umum Demo Slot

Ya. GitHub Copilot dapat membuat kerangka blok [TestClass] dan [TestMethod], menyarankan tata letak Arrange Act Assert, dan menghasilkan kasus [DataRow] berparameter dari tanda tangan metode target. RevPeriksa kembali pernyataan yang dihasilkan sebelum mempercayainya di lingkungan produksi.

Ya. Asisten berbasis pembelajaran mesin dapat menandai pengujian yang rentan, menyarankan nama yang lebih baik, dan menyoroti pengaturan duplikat yang seharusnya ada di [TestInitialize]. Mereka mempersingkat waktu peninjauan, tetapi pengembang tetap bertanggung jawab atas kebenaran setiap Assert.

Unit test mengisolasi satu kelas atau metode dan membuat tiruan (mock) dari dependensinya. Integration test menguji beberapa komponen secara bersamaan, seringkali mengakses basis data atau server web sungguhan. Unit test berjalan dalam hitungan milidetik; integration test membutuhkan waktu lebih lama tetapi dapat mendeteksi kesalahan konfigurasi.

Di Visual Studio Enterprise, gunakan Test Analyze. Code Cakupan untuk Semua Tes. Pada edisi lain, tambahkan Coverlet N.uGet package dan jalankan dotnet test โ€“collect:โ€XPlat Code Liputanโ€ untuk menghasilkan Cobertura Laporan XML.

Bungkus dependensi di balik sebuah antarmuka dan suntikkan melalui konstruktor. Dalam pengujian, berikan stub atau mock yang dibuat dengan pustaka seperti Moq atau NSubstitute sehingga unit yang diuji tidak pernah menyentuh basis data atau endpoint HTTP yang sebenarnya.

Jalankan `dotnet test` di folder yang berisi proyek pengujian. Perintah ini membangun proyek, menemukan setiap `[TestMethod]`, mengeksekusinya, dan mencetak ringkasan. Sistem CI seperti GitHub Actions memanggil perintah yang sama di dalam langkah alur kerja.

Tandai metode dengan [DataTestMethod] dan tambahkan satu atau lebih atribut [DataRow] yang menyediakan nilai input dan hasil yang diharapkan. MSTest kemudian menjalankan isi yang sama sekali per baris, menghasilkan baris terpisah di Test Explorer untuk setiap kasus.

Tulis sebuah [TestMethod] yang gagal yang menggambarkan perilaku yang dibutuhkan selanjutnya, tambahkan kode produksi secukupnya agar berhasil, lalu lakukan refaktorisasi. Mengulangi siklus refaktorisasi merah-hijau ini membuat desain dipandu oleh pengujian, bukan sebaliknya.

Ringkaslah postingan ini dengan: