editor php Xinyi akan memperkenalkan anda cara mengurus kod permulaan kebergantungan ujian. Apabila membangunkan perisian, anda selalunya perlu menggunakan pelbagai alat dan rangka kerja ujian, dan alatan serta rangka kerja ini mungkin memerlukan beberapa kod permulaan untuk konfigurasi dan penyediaan. Cara anda mengurus kod permulaan ini adalah penting untuk kebolehselenggaraan dan kebolehskalaan ujian anda. Perkara berikut akan memperkenalkan anda secara terperinci cara mengurus kod permulaan kebergantungan ujian untuk membantu anda melaksanakan kerja ujian perisian dengan lebih baik.
Saya mempunyai pembalut pembalakan (dilaksanakan menggunakan logrus di bawah) dan saya menggunakan pakej ini untuk log permohonan saya. Cara saya melakukan ini ialah dengan menghantar pembolehubah logger kepada setiap pakej yang diperlukan melalui suntikan pergantungan.
Di sini, semasa menulis kes ujian untuk setiap pakej, saya perlu menulis beberapa kod untuk memulakan pakej logger. Bagaimanakah kita boleh mengelak daripada menulis kod permulaan untuk setiap kes ujian pakej yang menggunakan pembalak?
logger/log.go
type logger interface { info(args ...interface{}) infof(format string, keyvals ...any) infowithfields(fields map[string]interface{}, msg ...interface{}) debug(args ...interface{}) debugf(format string, keyvals ...any) debugwithfields(fields map[string]interface{}, msg ...interface{}) }
app_test.go
func setupLogrusLogger() (*bytes.Buffer, Logger) { buf := &bytes.Buffer{} logrusLogger := log.New() logrusLogger.Out = buf logrusLogger.Formatter = &log.JSONFormatter{} return buf, NewLogrusLogger(logrusLogger) } func TestSomething(t *testing.T) { // buf can be used to inspect what gets logged if required buf, logger := setupLogrusLogger() Something(logger) }
Di sini, untuk setiap pakej yang menggunakan logger, saya perlu memulakan logger dengan mentakrifkan sesuatu seperti setuplogruslogger
. Adakah terdapat sebarang cara untuk mengelak daripada menulis ini secara berasingan untuk setiap pakej yang saya tulis ujian? setuplogruslogger
的内容来初始化记录器。有什么方法可以避免为我正在为其编写测试的每个包单独编写此内容?
导出依赖初始化函数并在非 _test.go
_test.go
Eksport fungsi permulaan kebergantungan dan isytiharkannya dalam fail bukan
Dan selagi anda hanya mengimport pakej utiliti ujian sedemikian daripada fail
(dan bukan fail biasa), kod utiliti ujian tidak akan masuk ke dalam binari yang disusun atur cara sebenar.
net/http/httptest
Contoh pakej utiliti ujian tersebut boleh didapati di perpustakaan standard:
net/internal/socktest
Package httptest menyediakan utiliti untuk ujian HTTP.
os/exec/internal/fdtest
Pakej ujian sock menyediakan utiliti untuk ujian soket.
p>
testing/fstest
Package Quick melaksanakan fungsi utiliti untuk membantu dalam ujian kotak hitam.
testing/iotest
Pakej fstest melaksanakan sokongan untuk pelaksanaan ujian sistem fail dan pengguna.
Atas ialah kandungan terperinci Cara mengurus kod permulaan untuk kebergantungan ujian. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!