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.