Golang
  • Daftar isi
  • Pengenalan Golang
  • Cara instalasi Golang
  • Cara menjalankan Golang
  • Cara mendeklarasikan variabel di Golang
  • Apa saja tipe-tipe data di Golang
  • Cara Konversi Tipe Data di Golang
  • Apa saja operator-operator di Golang
  • Cara melakukan seleksi kondisi di Golang
  • Cara melakukan perulangan di Golang
  • Cara membuat Array di Golang
  • Cara membuat Slice di Golang
  • Cara membuat Slice dengan Operator Slice
  • Cara membuat Map di Golang
  • Cara membuat Pointer di Golang
  • Cara membuat Function di Golang
  • Cara membuat Package di Golang
  • Cara membuat multi return Function di Golang
  • Cara membuat Struct di Golang
  • Cara membuat method di Golang
  • Cara membuat Defer dan Scope di Golang
  • Cara membuat underscore(blank) di Golang
  • Cara membuat Goroutine di Golang
  • Cara membuat Channels di Golang
  • Cara membuat WaitGroup di Golang
  • Cara membuat Select statement di Golang
  • Cara membuat Http Server di Golang
  • Cara membuat Http Server di Golang part 2
  • Cara membuat Http Server di Golang part 3
  • Cara membuat Http Server di Golang part 4
  • Pengenalan Testing di Go
  • Membuat Unit Test di Go
Powered by GitBook
On this page

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

  1. Membuat Fungsi yang Akan Diuji Misalkan kita memiliki fungsi sederhana yang mengembalikan nilai keliling lingkaran berdasarkan jari-jari yang diberikan.

    // File: geometry.go
    package geometry
    
    import "math"
    
    func CircleCircumference(radius float64) float64 {
        return 2 * math.Pi * radius
    }

    Fungsi CircleCircumference menerima jari-jari lingkaran dan mengembalikan nilai kelilingnya.

  2. 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 file geometry_test.go:

    // File: geometry_test.go
    package geometry
    
    import (
        "testing"
        "math"
    )
    
    func TestCircleCircumference(t *testing.T) {
        radius := 3.0
        expected := 2 * math.Pi * radius
        result := CircleCircumference(radius)
    
        if result != expected {
            t.Errorf("CircleCircumference(%f) = %f; want %f", radius, result, expected)
        }
    }

    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.

  3. Menjalankan Unit Test Untuk menjalankan unit test, buka terminal dan jalankan perintah:

    go test

    Ini akan mencari semua file _test.go di direktori, mengeksekusi fungsi Test*, dan melaporkan hasilnya.

  4. 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.

    func TestCircleCircumference_TableDriven(t *testing.T) {
        tests := []struct {
            radius   float64
            expected float64
        }{
            {0, 0},
            {1, 2 * math.Pi * 1},
            {2, 2 * math.Pi * 2},
            {3.5, 2 * math.Pi * 3.5},
        }
    
        for _, test := range tests {
            result := CircleCircumference(test.radius)
            if result != test.expected {
                t.Errorf("CircleCircumference(%f) = %f; want %f", test.radius, result, test.expected)
            }
        }
    }

    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() atau t.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:

    go test -cover

Sumber Referensi

PreviousPengenalan Testing di Go

Last updated 6 months ago

Dokumentasi resmi Go untuk paket testing:

Artikel Testing dan Best Practices di Go:

Effective Go dari golang.org:

https://golang.org/pkg/testing/
https://golang.org/doc/code.html#Testing
https://golang.org/doc/effective_go.html#testing