Membuat Unit Test di Go
Unit test adalah cara untuk menguji fungsi individu dalam aplikasi, memastikan bahwa setiap bagian dari kode berfungsi dengan benar dan independen dari bagian lainnya. Di Go, membuat unit test mudah dilakukan karena Go memiliki pustaka testing
yang mendukung penulisan dan pengelolaan unit test.
Langkah-Langkah Membuat Unit Test
Membuat Fungsi yang Akan Diuji Misalkan kita memiliki fungsi sederhana yang mengembalikan nilai keliling lingkaran berdasarkan jari-jari yang diberikan.
Fungsi
CircleCircumference
menerima jari-jari lingkaran dan mengembalikan nilai kelilingnya.Menyiapkan File Unit Test File unit test Go diberi akhiran
_test.go
agar Go secara otomatis mengenalinya sebagai file testing. Untuk fungsi di atas, kita buat filegeometry_test.go
:Pada fungsi
TestCircleCircumference
, kita:Menetapkan nilai jari-jari (
radius
) dan nilai keliling yang diharapkan (expected
).Memanggil fungsi
CircleCircumference
dengan jari-jari tersebut dan menyimpan hasilnya.Memeriksa apakah hasil fungsi sama dengan nilai yang diharapkan menggunakan
t.Errorf
jika tidak sesuai.
Menjalankan Unit Test Untuk menjalankan unit test, buka terminal dan jalankan perintah:
Ini akan mencari semua file
_test.go
di direktori, mengeksekusi fungsiTest*
, dan melaporkan hasilnya.Menambah Skenario Uji (Optional) Untuk memvalidasi fungsi lebih lanjut, kita bisa menambahkan skenario uji yang lebih beragam dengan tabel uji, yang memungkinkan kita menguji beberapa input dalam satu fungsi.
Dalam pendekatan tabel uji:
Kita mendefinisikan beberapa kasus uji (
tests
) dengan radius dan nilai yang diharapkan.Fungsi
for
menjalankan tes untuk setiap kasus dengan nilai radius dan hasil yang diharapkan, memungkinkan uji yang lebih mendalam.
Cara Menulis Assertion di Go
Dalam contoh di atas, t.Errorf
digunakan untuk menunjukkan kesalahan jika hasilnya tidak sesuai dengan ekspektasi. Metode lainnya dalam paket testing
termasuk:
t.Logf()
: untuk mencatat pesan selama uji.t.Fail()
: menandai tes sebagai gagal tetapi melanjutkan eksekusi.t.Fatal()
ataut.Fatalf()
: mencatat pesan dan menghentikan eksekusi tes segera.
Praktik Terbaik dalam Unit Testing di Go
Pastikan Fungsi Independen: Unit test harus terisolasi, sehingga tidak bergantung pada fungsi atau sumber daya lain.
Uji Nilai Ekstrem: Coba uji batas, misalnya radius nol atau angka sangat besar.
Pahami Cakupan Tes: Pertimbangkan untuk menjalankan tes dengan
-cover
untuk melihat cakupan kode:
Sumber Referensi
Dokumentasi resmi Go untuk paket testing: https://golang.org/pkg/testing/
Artikel Testing dan Best Practices di Go: https://golang.org/doc/code.html#Testing
Effective Go dari golang.org: https://golang.org/doc/effective_go.html#testing
Last updated