Menggunakan Table Tests

Table tests adalah struct, yang akan berisi nilai yang akan ditest. Dengan menggunakan Table Tests, akan membuang kode redundant yang dibuat pada modul sebelumnya.

Buka file main_test.go, lalu ubah menjadi kode seperti dibawah.

package main

import "testing"

func Test_isPrime(t *testing.T) {
	primeTests := []struct {
		name     string
		testNum  int
		expected bool
		msg      string
	}{
		{"prime", 7, true, "7 is prime number"},
		{"not prime", 4, false, "4 is not prime because is divisible by 2"},
	}

	for _, e := range primeTests {
		result, msg := isPrime(e.testNum)

		if e.expected && !result {
			t.Errorf("%s: expected true but got false", e.name)
		}

		if !e.expected && result {
			t.Errorf("%s: expected false but got true", e.name)
		}

		if e.msg != msg {
			t.Errorf("%s: expected %s but got %s", e.name, e.msg, msg)
		}
	}
}

Jika kita jalankan test dengan perintah dibawah, sesuai ekspektasi, test berhasil.

$ go test .

ok      primeapp        0.239s

Dengan menggunakan table tests, kita cukup menambahkan record angka yang akan ditest.

	primeTests := []struct {
		name     string
		testNum  int
		expected bool
		msg      string
	}{
		{"prime", 7, true, "7 is prime number"},
		{"not prime", 4, false, "4 is not prime because is divisible by 2"},
                //tambahkan record angka yang akan ditest disini
	}

Pada modul selanjutnya kita akan membahas coverage dari kode test.

Sharing is caring:

Leave a Comment