1 Maret 20244
Halo kawan-kawan Dev! Tutorial ini akan membahas cara menyusun Unit Testing pada sebuah project .NET menggunakan xUnit.
Testing merupakan bagian penting pada software development. Proses testing dapat membantu kita untuk mendeteksi isu atau galat yang ada pada aplikasi kita. Kita pun dapat melakukan testing secara manual atau otomatis pada project kita. Namun sebagai developer, testing akan lebih efisien apabila dilakukan secara otomotis. Nah, salah satu implementasi dari testing secara otomatis adalah unit testing.
Unit testing sendiri adalah proses testing yang melibatkan tiap komponen yang ada pada aplikasi. Hal ini dilakukan untuk mengetahui proses pada masing-masing komponen tadi secara spesifik dan terpisah sesuai dengan hasil yang diinginkan pada tiap komponen tadi.
Project pada tutorial ini akan menggunakan Unit Testing untuk aplikasi yang memakai ASP.NET Core MVC. Aplikasi yang akan kita buat merupakan aplikasi untuk pemilihan asrama bagi siswa siswi sekolah sihir Hogwarts. Terdapat 4 asrama yaitu Slytherin, Gryffindor, Ravenclaw, Hufflepuff. Setiap siswa dan siswi di sekolah ini akan tinggal di satu asrama sesuai pilihan topi seleksi secara acak. Nah, aplikasi yang kita buat nanti akan mempunyai fungsi yang sama dengan topi seleksi.
Okay, mari kita buat aplikasi topi seleksi untuk pelajar sekolah sihir Hogwarts. Buka PowerShell (Windows) atau terminal (Linux dan macOS) dan buat sebuah folder dengan nama ‘aplikasi-topi-seleksi-hogwarts’. Saya akan menggunakan terminal untuk membuat folder ini.
Selanjutnya, kita akan membuat dua project yaitu TopiSeleksi dan TopiSeleksi.Tests untuk testing. Pertama kita buat dulu aplikasi TopiSeleksi menggunakan perintah ini.
kemudian perintah ini untuk membuat TopiSeleksi.Tests
Setelah melakukan perinth tadi, kita lanjutkan untuk membuat solution pada project kita.
Tambahkan TopiSeleksi kedalam solution tadi.
Tambahkan juga TopiSeleksi.Tests ke solution yang sama.
Setelah langkah membuat solution, kita harus membuat TopiSeleksi sebagai dependency untuk project TopiSeleksi.Tests.
Isi folder ‘aplikasi-topi-seleksi-hogwarts’ adalah TopiSeleksi, TopiSeleksi.Tests, dan aplikasi-topi-seleksi-hogwarts.sln.
Buka folder ‘aplikasi-topi-seleksi-hogwarts’ menggunakan VS Code atau IDE favorit kawan-kawan sekalian. Langkah selanjutnya adalah membuat SeleksiController pada folder TopiSeleksi/Controller untuk proses pengumpulan nama siswa siswi dan hasil asrama untuk mereka. Berikut kode pada SeleksiController.
SeleksiController ini mempunyai satu method yaitu Index dan method ini menerima satu paramater yaitu ’name’ yang bertipe string. SeleksiController menghasilkan BadRequest
apabila model state invalid. Variable house menyimpan informasi asrama pada sekolah sihir Hogwarts. Kemudian kita menggunakan Random class untuk melakukan pemilihan asrama pada pelajar Hogwarts.
Langkah berikutnya adalah membuat tampilan untuk Index method. Buat sebuah folder yaitu Seleksi di dalam folder TopiSeleksi/Views. Pada folder TopiSeleksi/Views/Seleksi buat sebuah file yaitu Index.cshtml dan Copy kode berikut.
Pada folder ‘aplikasi-topi-seleksi-hogwarts’, jalankan aplikasi kita menggunakan perintah ini.
Apabila teman teman mengunjungi /seleksi
, maka akan muncul bad request information. Kita harus menyediakan paramater name untuk rute ini. Kita bisa bisa mengunjungi rute tadi dan menambahkan name seperti berikut /seleksi?name=Latuharhari
dan kawan-kawan akan melihat hasil seleksi asramanya. Untuk menghentikan aplikasi kita, gunakan Ctrl + C pada terminal atau PowerShell.
Okay mari kita buat test untuk aplikasi TopiSeleksi. Sebelum membuat test, kita hapus terlebih dahulu default test dari .NET yaitu TopiSeleksi.Tests/UnitTest1.cs. Lalu kita buat SeleksiControllerTests.cs di dalam TopiSeleksi.Tests. File ini akan kita gunakan untuk melakukan test terhadap SeleksiController. Berikut kode untuk SeleksiControllerTests.cs.
SeleksiControllerTests.cs melakukan dua test pada SeleksiController. Test Index_ReturnsAViewResult_WithHouseInformation()
merupakan test untuk memastikan Index method menghasilkan output yang tepat yaitu pilihan asrama apabila diberikan input yang sesuai.
Test IndexPost_ReturnsBadRequestResult_WhenModelStateIsInvalid()
berfungsi untuk input yang membuat Model State menjadi invalid maka Index method harus memberikan respon Bad Request
.
Atribut [Fact]
merupakan definisi pada method sebagai sebuah test method yang harus dijalankan saat proses testing.
Test dapat dijalankan dari folder ‘aplikasi-topi-seleksi-hogwarts’ menggunakan perintah berikut.
Perintah dotnet test
akan melakukan build pada project dan menjalankan test. Selanjutnya, kawan-kawan akan melihat hasilnya di terminal bahwa semua test nya lolos (passed).
TopiSeleksi sudah kita dites dengan melakukan unit testing. Dari project ini, kawan-kawan bisa menambah skenario test tambahan untuk project ini. Dari contoh project sederhana ini juga, semoga bisa tergambar dengan jelas bagaimana menyusun unit testing pada sebuah project .NET menggunakan xUnit.
Repository untuk tutorial ini sudah tersedia di Github DevKage ya kawan-kawan.
Happy coding!