Menulis ujian yang berkesan dalam GO melibatkan pemahaman tahap ujian yang berbeza dan menggunakan amalan terbaik untuk setiap. Mari kita memecahkan unit, integrasi, dan ujian akhir-ke-akhir:
Ujian unit: Ujian ini memberi tumpuan kepada komponen individu atau unit kod, biasanya berfungsi. Mereka mengasingkan unit dari kebergantungan luaran, sering menggunakan mocks atau stub untuk mensimulasikan interaksi dengan kebergantungan tersebut. Matlamatnya adalah untuk mengesahkan bahawa setiap unit berfungsi dengan betul secara berasingan. 3}, {& quot; Nombor negatif & quot;, -1, -2, -3}, {& quot; sifar dan positif & quot;, 0, 5, 5},} untuk _, tc: = testcases {t.run (tc.name, func (t *test.t) t.errorf (& quot; add ( %d, %d) = %d; mahu %d & quot;, tc.x, tc.y, got, tc.want)}})}}
Contoh ini menunjukkan ujian unit mudah menggunakan rangka kerja ujian terbina dalam GO. Fungsi TestAdd menguji fungsi dengan beberapa kes ujian, memastikan ia mengendalikan senario input yang berbeza dengan betul. Penggunaan t.run
membolehkan kes -kes ujian yang teratur dan mudah dikenalpasti.
Mereka sering melibatkan kebergantungan sebenar, tetapi mungkin masih menggunakan mocks atau stub untuk sistem luaran yang sukar untuk diakses atau dikawal semasa ujian (seperti pangkalan data atau API luaran). Fokusnya adalah untuk memastikan bahawa bahagian-bahagian sistem anda berfungsi bersama dengan betul.
<code class="go"> pakej mypackage import (& quot; testing & quot; & quot; pangkalan data/sql & quot; _ & quot; github.com/go-sql-driver/mysql" TestDatabaseInterAction (t *testing.t) {db, err: = sql.open (& quot; mysql & quot;, & quot; pengguna: kata laluan@tcp (127.0.0.1:3306)/myDatabase & quot; } </code>
Contoh ini menunjukkan ujian integrasi berinteraksi dengan pangkalan data. Ia membuka sambungan, melakukan operasi pangkalan data, dan mengesahkan hasilnya. Ingatlah untuk mengendalikan kesilapan yang berpotensi dan menutup sambungan pangkalan data dengan sewajarnya. Mereka biasanya perlahan dan berintensifkan sumber, tetapi memberikan tahap keyakinan tertinggi bahawa aplikasi berfungsi seperti yang diharapkan. Mereka sering melibatkan memulakan aplikasi dan berinteraksi dengannya melalui API atau UI. Alat seperti selenium (untuk ujian UI) atau pelanggan HTTP tersuai sering digunakan.
Tahap ujian yang berbeza ini memberikan pendekatan yang komprehensif untuk memastikan kualiti kod. Ujian unit memberikan maklum balas yang cepat mengenai komponen individu, ujian integrasi mengesahkan interaksi, dan ujian E2E mengesahkan sistem lengkap.
ujian/mypackage
direktori untuk memegang ujiannya. Konvensyen biasa adalah untuk menamakan fail ujian *_ test.go
. Fungsi ujian hendaklah bermula dengan ujian
. Gunakan nama deskriptif untuk fungsi ujian anda yang jelas menunjukkan apa yang mereka uji. Gunakan set data berasingan untuk ujian untuk mengelakkan konflik dengan data pengeluaran. Pertimbangkan menggunakan pangkalan data dalam memori atau fail sementara untuk data ujian. testing.t
Objek menyediakan kaedah untuk melaporkan kegagalan ujian ( t.skipf
), dan maklumat pembalakan ( t.log
, t.logf
). Kegagalan. Ini membantu mengenal pasti kawasan yang memerlukan lebih banyak ujian. Alat seperti Go Test -cover
Sediakan laporan liputan asas. Atas ialah kandungan terperinci Bagaimanakah saya menulis ujian unit yang berkesan, ujian integrasi, dan ujian akhir-ke-akhir?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!