Test coverage adalah untuk mengetahui, apakah fungsi test yang dibuat sudah mengcover semua option.
Untuk menampilkan coverage digunakan option -cover, berikut contoh penggunaan perintahnya.
$ go test -cover .
ok primeapp 0.234s coverage: 54.5% of statements
Dapat dilihat informasi menunjukan test baru mengcover 54.5%.
Kita juga bisa menggunakan HTML report dengan menggunakan option -coverprofile=namafile, kemudian menggunakan perintah go tool untuk menampilkannya sebagai HTML.
$ go test -coverprofile=coverage
PASS
coverage: 54.5% of statements
ok primeapp 0.258s
$ go tool cover -html=coverage
Default web browser akan otomatis dibuka, dan akan ditampilkan report coverage. Dapat dilihat pada screen shoot dibawah, ada dua pengecekan pada fungsi isPrime yang belum tercover oleh fungsi test.

Mari kita tambahkan table test untuk memenuhi coverage dari test.
Buka file main_test.go, lalu ubah code 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"},
{"zero", 0, false, "0 is not prime"},
{"one", 1, false, "1 is not prime"},
{"negatif", -1, false, "negative is not prime"},
}
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)
}
}
}
Mari kita coba periksa lagi coverage, dan tampilkan reportnya dalam format HTML.
$ go test -coverprofile=coverage
PASS
coverage: 72.7% of statements
ok primeapp 0.262s
$ go tool cover -html=coverage
Berikut screen shoot coverage setelah kita tambahkan angka yang akan ditest pada table tests.

Dapat dilihat seluruh fungsi isPrime sudah tercover. Yang belum adalah fungsi main.