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.