0Pricing
Go Academy · Pelajaran

Menulis Pengujian Unit dengan testing

Fungsi TestXxx, t.Error, t.Fatal, dan t.Helper

Menulis Pengujian Unit dengan testing adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 1 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.

Paket testing

Paket bawaan Go, testing, menyediakan semua yang diperlukan untuk pengujian unit: fungsi pengujian, pelaporan kegagalan, dan biner pengujian. Tidak diperlukan kerangka kerja eksternal.

Bentuk fungsi pengujian

Fungsi pengujian harus diawali dengan Test, menerima *testing.T, dan berada dalam berkas yang diakhiri dengan _test.go.

func TestAdd(t *testing.T) {
    got := Add(2, 3)
    if got != 5 {
        t.Errorf("Add(2,3) = %d; want 5", got)
    }
}

t.Error vs t.Fatal

t.Error menandai kegagalan dan melanjutkan pengujian; t.Fatal menandai kegagalan dan segera menghentikan pengujian saat ini. Gunakan Fatal ketika penegasan berikutnya bergantung pada penegasan yang gagal.

Menjalankan pengujian

Jalankan semua pengujian: go test ./.... Jalankan pengujian tertentu: go test -run TestAdd. Tambahkan -v untuk keluaran terperinci.

go test -v -run TestAdd ./...

t.Helper

Tandai pembantu penegasan dengan t.Helper() agar pesan kesalahan melaporkan baris pemanggil, bukan baris pembantu.

func assertEqual(t *testing.T, got, want int) {
    t.Helper()
    if got != want {
        t.Errorf("got %d; want %d", got, want)
    }
}

TestMain

TestMain(m *testing.M) adalah titik masuk opsional untuk penyiapan dan pembersihan sebelum dan sesudah seluruh rangkaian pengujian berjalan (misalnya, memulai basis data pengujian).

func TestMain(m *testing.M) {
    setup()
    code := m.Run()
    teardown()
    os.Exit(code)
}

Subpengujian dengan t.Run

Kelompokkan kasus yang berkaitan dengan t.Run. Setiap subpengujian berjalan secara independen dan dapat ditargetkan dengan -run TestFoo/SubcaseName.

func TestMath(t *testing.T) {
    t.Run("addition", func(t *testing.T) { /* ... */ })
    t.Run("subtraction", func(t *testing.T) { /* ... */ })
}

Struktur berkas pengujian

Pengujian dalam paket yang sama dapat mengakses pengenal yang tidak diekspor. Pengujian dalam paket _test (pengujian kotak hitam) hanya dapat mengakses pengenal yang diekspor.

// white-box: package mylib
// black-box: package mylib_test

go test -cover

Ukur cakupan kode dengan go test -cover. Untuk laporan HTML terperinci: go test -coverprofile=c.out ./... && go tool cover -html=c.out.

Pengujian dengan antarmuka

Rancang kode agar bergantung pada antarmuka sehingga pengujian dapat memasukkan implementasi palsu tanpa memulai layanan nyata.

t.Parallel

Panggil t.Parallel() di awal pengujian untuk menandainya aman dijalankan secara bersamaan dengan pengujian paralel lainnya, sehingga mempercepat rangkaian pengujian.

func TestRead(t *testing.T) {
    t.Parallel()
    // ...
}

Pemeriksaan Singkat

Apa perbedaan antara t.Error dan t.Fatal?

Ringkasan: Pengujian Unit dengan testing

Poin penting:

  • Fungsi pengujian: TestXxx(t *testing.T) dalam berkas _test.go
  • t.Error melanjutkan pengujian; t.Fatal menghentikannya
  • t.Helper() untuk nomor baris kesalahan yang rapi pada pembantu
  • t.Run untuk subpengujian; t.Parallel untuk pengujian bersamaan

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Menulis Pengujian Unit dengan testing” gratis?

Ya — teks lengkap “Menulis Pengujian Unit dengan testing” 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 “Menulis Pengujian Unit dengan testing”?

Fungsi TestXxx, t.Error, t.Fatal, dan t.Helper 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 1 dari 4.

Berapa lama pelajaran “Menulis Pengujian Unit dengan testing” 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