Memeriksa Test Coverage

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.

Sharing is caring:

Leave a Comment