Jadual Kandungan
Cara Menulis Ujian Unit Asas
Ujian yang didorong oleh jadual: Cara yang lebih bersih untuk menguji pelbagai kes
Menjalankan ujian tertentu dan mendapat lebih banyak output
Rumah pembangunan bahagian belakang Golang Apakah ujian dalam GO, dan bagaimana saya menulis ujian unit?

Apakah ujian dalam GO, dan bagaimana saya menulis ujian unit?

Jun 20, 2025 am 08:41 AM
go Ujian unit

Ujian unit Go dilaksanakan melalui pakej ujian terbina dalam, dan pemaju hanya perlu mengikuti spesifikasi penamaan untuk menulis dan menjalankan ujian. Langkah -langkah khusus termasuk: 1. Buat fail ujian yang berakhir dengan _test.go; 2. Tulis fungsi ujian bermula dengan ujian; 3. Laporkan kesilapan dengan t.Errorf (); 4. Jalankan ujian menggunakan arahan ujian Go; 5. Ujian kes -kes penggunaan berganda dengan pemacu meja; 6. Jalankan ujian khusus menggunakan bendera -run dan dapatkan output terperinci menggunakan bendera -v. Sebagai contoh, apabila menguji fungsi Tambah, anda boleh menulis fungsi testAdd dalam math_test.go dan menentukan pelbagai set input dan output melalui struktur untuk pengesahan. Di samping itu, anda boleh menjalankan ujian yang ditentukan melalui ujian GO -RUN TestAdd, atau melihat maklumat log terperinci melalui GO Test -V.

Apakah ujian dalam GO, dan bagaimana saya menulis ujian unit?

Ujian di Go adalah ciri terbina dalam yang membolehkan pemaju menulis dan menjalankan ujian secara langsung bersama kod mereka, tanpa memerlukan perpustakaan pihak ketiga. Ujian unit di GO adalah mudah - ia menggunakan pakej testing dan mengikuti konvensyen penamaan mudah untuk fungsi ujian.

Cara Menulis Ujian Unit Asas

Untuk menulis ujian unit di GO, anda membuat fungsi dalam fail _test.go . Nama fungsi mesti bermula dengan Test , diikuti dengan nama fungsi atau kaedah yang diuji.

Sebagai contoh, jika anda mempunyai fungsi yang dipanggil Add dalam fail bernama math.go , anda akan menulis ujiannya dalam fail bernama math_test.go . Begini bagaimana ujian asas dapat dilihat:

 Pakej utama

Import "Ujian"

FunctAdd (t *testing.t) {
    Keputusan: = Tambah (2, 3)
    Diharapkan: = 5

    jika hasil! = dijangka {
        t.errorf ("dijangka %d, mendapat %d", diharapkan, hasilnya)
    }
}
  • Pastikan fail ujian anda berakhir di _test.go
  • Import Pakej testing
  • Gunakan t.Errorf() (atau kaedah yang serupa) untuk melaporkan kegagalan

Apabila anda sudah bersedia untuk menjalankan ujian, gunakan baris arahan:

 Pergi ujian

Sekiranya semuanya berlalu, anda akan melihat mesej PASS . Sekiranya sesuatu gagal, pergi akan menunjukkan kepada anda dengan tepat ujian yang gagal dan mengapa.

Ujian yang didorong oleh jadual: Cara yang lebih bersih untuk menguji pelbagai kes

GO pemaju sering menggunakan ujian yang didorong oleh jadual untuk menyemak pelbagai kombinasi input-output dalam fungsi ujian tunggal. Ini menyimpan ujian ringkas dan mudah dijaga.

Berikut adalah contoh menggunakan fungsi Add yang sama:

 FunctAdd (t *testing.t) {
    Ujian: = [] struct {
        A, B Int
        Jangkakan int
    } {
        {2, 3, 5},
        {0, 0, 0},
        {-1, 1, 0},
        {100, 200, 300},
    }

    untuk _, tt: = ujian julat {
        Keputusan: = Tambah (TT.A, TT.B)
        jika hasil! = tt.expect {
            T.errorf ("Tambah ( %D, %D): dijangka %d, mendapat %d", tt.a, tt.b, tt.expect, hasil)
        }
    }
}

Pendekatan ini memudahkan:

  • Tambahkan lebih banyak kes ujian dengan cepat
  • Lihat apa yang sedang diuji sepintas lalu
  • Gunakan semula logik penegasan yang sama di semua kes

Ramai projek Go lebih suka gaya ini kerana ia mengurangkan pertindihan dan meningkatkan kebolehbacaan.

Menjalankan ujian tertentu dan mendapat lebih banyak output

Sekiranya anda mempunyai banyak ujian dan ingin menjalankan hanya satu, anda boleh menggunakan bendera -run diikuti dengan ungkapan biasa yang sepadan dengan nama ujian:

 Pergi Ujian -Run TestAdd

Untuk mendapatkan output yang lebih terperinci, termasuk log dari t.Log() atau fmt.Println() , tambahkan bendera -v :

 Pergi ujian -v

Anda juga boleh menggabungkan bendera:

 Pergi ujian -v -run testadd

Pilihan ini berguna apabila debugging ujian gagal atau apabila anda bekerja di bahagian tertentu dari pangkalan kod anda.


Itulah asas -asas menulis dan menjalankan ujian di GO. Ia tidak rumit, tetapi terdapat beberapa peraturan kecil yang perlu diingat, seperti konvensyen penamaan dan di mana untuk meletakkan fail ujian anda.

Atas ialah kandungan terperinci Apakah ujian dalam GO, dan bagaimana saya menulis ujian unit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Skop pembolehubah PHP dijelaskan
4 minggu yang lalu By 百草
Petua untuk menulis komen php
4 minggu yang lalu By 百草
Mengulas kod dalam php
4 minggu yang lalu By 百草

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1510
276
Apakah beberapa amalan terbaik untuk log masuk? Apakah beberapa amalan terbaik untuk log masuk? Aug 04, 2025 pm 04:48 PM

Menggunakan pembalakan berstruktur, menambahkan konteks, mengawal tahap log, mengelakkan data sensitif pembalakan, menggunakan nama medan yang konsisten, kesilapan pembalakan dengan betul, mengambil kira prestasi, memantau log dan menyatukan konfigurasi adalah amalan terbaik untuk mencapai pembalakan yang cekap. Pertama, log berstruktur dalam format JSON (seperti menggunakan uber-go/zap atau rs/zerolog) memudahkan parsing mesin dan mengintegrasikan rusa, datadog dan alat lain; Kedua, kebolehpercayaan log dipertingkatkan dengan meminta maklumat konteks seperti ID dan ID pengguna, dan boleh disuntik melalui konteks.context atau middleware HTTP; Ketiga, gunakan debug, info, memberi amaran, tahap ralat yang munasabah, dan beroperasi melalui pembolehubah persekitaran.

Apakah arahan ujian Go yang digunakan? Apakah arahan ujian Go yang digunakan? Aug 03, 2025 pm 02:47 PM

GOTESTISTISTANDARDARMANDFANDFORRUNNINGESTSINGO, secara automatik

Bagaimana cara mematikan perkhidmatan yang anggun? Bagaimana cara mematikan perkhidmatan yang anggun? Aug 05, 2025 pm 08:21 PM

Usesignal.Notify()tolistenforSIGINT/SIGTERMandtriggershutdown;2.RuntheHTTPserverinagoroutineandblockuntilasignalisreceived;3.Callserver.Shutdown()withacontexttimeouttostopacceptingnewrequestsandallowin-flightonestocomplete;4.Propagatetheshutdownconte

Bagaimanakah jenis melaksanakan antara muka di GO? Bagaimanakah jenis melaksanakan antara muka di GO? Aug 03, 2025 pm 03:19 PM

Ingo, atypeimplementsanInterfaceImplicitlybyprovidingallRequiredMethodSwithoutExplicitDeclaration.1.interfacesaresatisfiedautomaticallyWenatypehasmethodsmatchingheintheinteintheinteintheinteintheinteintheinteintheinteintheinteintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheinterface

Cara menghuraikan data XML di GO Cara menghuraikan data XML di GO Aug 05, 2025 pm 07:24 PM

Data Parsing XML sangat mudah di GO, hanya gunakan pakej pengekodan terbina dalam/XML. 1. Tentukan struktur dengan tag XML untuk memetakan elemen dan atribut XML, seperti XML: "Nama" Unsur Kanak -kanak yang Bersama, XML: "Hubungi> E -mel" mengendalikan NESTING, XML: "ID, ATTR" membaca atribut; 2. Gunakan xml.unmarshal untuk menghuraikan rentetan XML ke dalam struktur; 3. Untuk fail, gunakan OS.Open untuk membukanya dan menyahkod mereka melalui XML.NewDecoder, yang sesuai untuk pemprosesan aliran fail besar; 4. Semasa memproses elemen pendua, dalam struktur

Corak jest dan corak canggih untuk ujian unit yang berkesan Corak jest dan corak canggih untuk ujian unit yang berkesan Aug 06, 2025 am 12:23 AM

Mengelakkan mockingbyusingpartialmocksandspiestotestIntionswithoutreplacingententireImplementations, mockingonlyexternaldependencyeslikoapeapis.2.usefaketimers (jest.usefaketimersinjest, vi.useFakeFakeTimersInvitest)

Cara Mendapatkan Masa Semasa Pergi Cara Mendapatkan Masa Semasa Pergi Aug 06, 2025 am 11:28 AM

UseTime.now () togetTheCurrentLocalTimeasatime.TimeObject; 2.FormatTheTimeSingTheFormatMethodWithlayoutsike "2006-01-0215: 04:05 "; 3.GetutTimeByCallingUtc () ontheresulttime.now (); 4.ExtractComponentsLikeyear, bulan, dayingingMethodssuchasyear (), m

Cara membuat dan menggunakan jenis ralat tersuai di Go Cara membuat dan menggunakan jenis ralat tersuai di Go Aug 11, 2025 pm 11:08 PM

Dalam GO, mencipta dan menggunakan jenis ralat tersuai dapat meningkatkan ekspresi dan kebarangkalian pengendalian ralat. Jawapannya adalah untuk membuat ralat tersuai dengan menentukan struktur yang melaksanakan kaedah ralat (). Sebagai contoh, ValidationError mengandungi medan medan dan mesej dan mengembalikan maklumat ralat yang diformat. Kesalahan itu kemudiannya boleh dikembalikan dalam fungsi, mengesan jenis ralat tertentu melalui penegasan jenis atau ralat. Untuk melaksanakan logik yang berbeza. Anda juga boleh menambah kaedah tingkah laku seperti iskritikal kepada kesilapan tersuai, yang sesuai untuk senario yang memerlukan data berstruktur, pemprosesan yang dibezakan, eksport perpustakaan atau integrasi API. Dalam kes -kes yang mudah, kesilapan. Kesalahan, dan kesilapan yang telah ditetapkan seperti errnotfound boleh digunakan untuk sebanding

See all articles