


Apakah ujian dalam GO, dan bagaimana saya menulis 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.
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!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

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

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

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.

GOTESTISTISTANDARDARMANDFANDFORRUNNINGESTSINGO, secara automatik

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

Ingo, atypeimplementsanInterfaceImplicitlybyprovidingallRequiredMethodSwithoutExplicitDeclaration.1.interfacesaresatisfiedautomaticallyWenatypehasmethodsmatchingheintheinteintheinteintheinteintheinteintheinteintheinteintheinteintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheintheinterface

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

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

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

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
