0Pricing
Go Academy · Pelajaran

Cakupan Pengujian dan testify

go test -cover dan pustaka asersi testify

Cakupan Pengujian dan testify adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.

go test -cover

Tambahkan -cover ke perintah go test apa pun untuk mencetak persentase cakupan setiap paket.

go test -cover ./...
// ok  myapp 68.4% of statements

Profil cakupan

Buat berkas profil cakupan dan tampilkan sebagai HTML untuk melihat baris mana yang tercakup:

go test -coverprofile=c.out ./...
go tool cover -html=c.out -o coverage.html

Ambang cakupan dalam CI

Terapkan cakupan minimum dengan perintah terminal satu baris:

pct=$(go test -cover ./... | awk '/coverage/ {gsub(/%/,""); print $NF}')
[ "${pct%.*}" -ge 80 ] || { echo "Coverage $pct% below 80%"; exit 1; }

Cakupan 100% bukanlah tujuan

Cakupan mengukur baris mana yang dijalankan, bukan apakah penegasannya bermakna. Usahakan cakupan tinggi pada jalur penting; cakupan lebih rendah dapat diterima pada cabang kesalahan yang tidak mungkin tercapai.

testify/assert

github.com/stretchr/testify/assert menyediakan penegasan yang mudah dibaca dan secara otomatis melaporkan nilai yang diharapkan dan nilai aktual:

assert.Equal(t, 42, result)
assert.NoError(t, err)
assert.Contains(t, list, "item")
assert.True(t, isValid)

testify/require

require identik dengan assert, tetapi memanggil t.FailNow() saat terjadi kegagalan dan segera menghentikan pengujian (seperti t.Fatal).

require.NoError(t, err) // stop if err != nil
// Subsequent code only runs if err is nil

testify/suite

testify/suite mengelompokkan pengujian yang berkaitan dalam sebuah struct dengan penyiapan dan pembersihan bersama, mirip dengan rangkaian pengujian xUnit:

type UserSuite struct { suite.Suite; db *DB }
func (s *UserSuite) SetupTest() { s.db = openTestDB() }
func (s *UserSuite) TestCreate() { /* ... */ }
func TestUserSuite(t *testing.T) { suite.Run(t, new(UserSuite)) }

assert.ElementsMatch

Bandingkan irisan tanpa memperhatikan urutannya:

assert.ElementsMatch(t, []int{3,1,2}, []int{1,2,3})

assert.JSONEq

Bandingkan string JSON tanpa memperhatikan urutan kunci:

assert.JSONEq(t, `{"a":1,"b":2}`, `{"b":2,"a":1}`)

Asersi khusus

Bungkus testify dalam pembantu asersi Anda sendiri untuk menambahkan konteks domain pada pesan kegagalan:

func assertUserValid(t testing.TB, u *User) {
    t.Helper()
    assert.NotEmpty(t, u.Name)
    assert.Positive(t, u.ID)
}

Menggabungkan cakupan dengan testify

testify tidak memengaruhi pelaporan cakupan—cakupan hanya memperhatikan apakah baris dijalankan, terlepas dari pustaka asersi yang digunakan.

Pemeriksaan singkat

Apa perbedaan antara testify/assert dan testify/require?

Ringkasan: Cakupan dan testify

Poin utama:

  • go test -cover; -coverprofile untuk laporan HTML
  • assert: lanjutkan saat terjadi kegagalan; require: berhenti saat terjadi kegagalan
  • testify/suite untuk pengujian yang dikelompokkan dengan penyiapan bersama
  • Cakupan tinggi itu baik; asersi yang bermakna lebih baik

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Cakupan Pengujian dan testify” gratis?

Ya — teks lengkap “Cakupan Pengujian dan testify” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Cakupan Pengujian dan testify”?

go test -cover dan pustaka asersi testify Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Go Academy?

Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Cakupan Pengujian dan testify” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?

Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Menulis Pengujian Unit dengan testing
  2. Pengujian Berbasis Tabel
  3. Pengganti Pengujian: Mock dan Stub
  4. Cakupan Pengujian dan testify
← Kembali ke Go Academy