Rumah > pembangunan bahagian belakang > Golang > Cara mengurus kod permulaan untuk kebergantungan ujian

Cara mengurus kod permulaan untuk kebergantungan ujian

WBOY
Lepaskan: 2024-02-09 18:00:15
ke hadapan
663 orang telah melayarinya

Cara mengurus kod permulaan untuk kebergantungan ujian

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.

Kandungan soalan

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{})
}
Salin selepas log masuk

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)
}
Salin selepas log masuk

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

Penyelesaian

_test.goEksport fungsi permulaan kebergantungan dan isytiharkannya dalam fail bukan

supaya pakej lain boleh mengimport dan menggunakannya semula. Jika anda ingin memisahkan logik ujian daripada kod biasa pakej, anda boleh mengalihkan fungsi permulaan ke dalam pakej yang menyediakan utiliti ujian.

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/httptestContoh pakej utiliti ujian tersebut boleh didapati di perpustakaan standard:

net/internal/socktestPackage httptest menyediakan utiliti untuk ujian HTTP.

os/exec/internal/fdtestPakej ujian sock menyediakan utiliti untuk ujian soket. p>

testing/quickPackage fdtest menyediakan pembantu ujian untuk bekerja dengan deskriptor fail merentas eksekutif.

testing/fstestPackage Quick melaksanakan fungsi utiliti untuk membantu dalam ujian kotak hitam.

testing/iotestPakej fstest melaksanakan sokongan untuk pelaksanaan ujian sistem fail dan pengguna.

🎜🎜 🎜Pakej iotest melaksanakan pembaca dan penulis terutamanya untuk ujian. 🎜

Atas ialah kandungan terperinci Cara mengurus kod permulaan untuk kebergantungan ujian. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:stackoverflow.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan