Rumah >pembangunan bahagian belakang >Golang >Apakah fungsi ujian go?

Apakah fungsi ujian go?

青灯夜游
青灯夜游asal
2023-02-01 16:55:334114semak imbas

"go test" ialah perintah ujian, yang digunakan untuk menguji program yang ditulis dalam bahasa Go; ujian ini adalah berdasarkan pakej kod. Perintah "go test" secara automatik akan membaca fail kod sumber bernama "*_test.go" di bawah direktori kod sumber yang mengandungi beberapa fungsi ujian Fungsi ujian biasanya mempunyai nama awalan "Ujian" dan jenis "ujian. Fungsi T" " diisytiharkan dengan parameter.

Apakah fungsi ujian go?

Persekitaran pengendalian tutorial ini: sistem Windows 7, GO versi 1.18, komputer Dell G3.

Bahasa Go mempunyai satu set ujian unit dan sistem ujian prestasi, yang boleh menguji sekeping kod yang diperlukan dengan cepat dengan hanya sedikit kod yang ditambahkan.

Perintah go test akan membaca fail bernama *_test.go secara automatik di bawah direktori kod sumber, menjana dan menjalankan fail boleh laku untuk ujian.

arahan go test (arahan ujian)

go test perintah digunakan untuk menguji atur cara yang ditulis dalam bahasa Go. Ujian jenis ini adalah berdasarkan pakej kod. Sudah tentu, ini juga memerlukan bantuan fail kod sumber ujian. Kami akan menghuraikan cara menulis dan menulis kod ujian program Go dalam bahagian kedua bab ini. Di sini, kita hanya membincangkan cara menggunakan arahan untuk memulakan ujian. Perintah

go test akan menguji setiap pakej kod yang ditentukan secara automatik. Sudah tentu, premisnya ialah fail kod sumber ujian wujud dalam pakej kod yang ditentukan. Fail kod sumber ujian ialah fail kod sumber yang namanya diakhiri dengan "_test.go" dan mengandungi beberapa fungsi ujian. Fungsi ujian secara amnya ialah fungsi yang namanya diawali dengan "Ujian" dan mempunyai pengisytiharan parameter jenis "testing.T".

Sekarang, mari kita uji beberapa pakej kod dalam projek goc2p. Cara untuk menentukan pakej kod apabila menggunakan perintah go test adalah sama seperti arahan lain - menggunakan laluan import pakej kod. Jika anda perlu menguji berbilang pakej kod, anda perlu menambah ruang antara laluan importnya untuk memisahkannya. Contohnya adalah seperti berikut: Perintah

hc@ubt:~$ go test basic cnet/ctcp pkgtool
ok      basic    0.012s
ok      cnet/ctcp    2.014s
ok      pkgtool    0.014s

go test akan mencetak maklumat ringkasan ujian dalam unit pakej kod selepas melaksanakan semua fail ujian dalam pakej kod. Dalam contoh di atas, lajur pertama bagi tiga baris maklumat yang sepadan dengan tiga pakej kod ialah "ok". Ini bermakna mereka semua lulus ujian. Lajur ketiga setiap baris menunjukkan masa, dalam saat, masa yang diperlukan untuk menjalankan ujian yang sepadan. Kami juga boleh menjalankan perintah go test tanpa sebarang parameter dalam direktori pakej kod. Fungsi dan hasilnya adalah sama seperti contoh di atas.

Selain itu, kami juga boleh menentukan fail kod sumber ujian untuk ujian. Dalam kes ini, arahan go test hanya akan melaksanakan ujian dalam fail yang ditentukan, seperti ini:

    hc@ubt:~/golang/goc2p/src/pkgtool$ go test envir_test.go
# command-line-arguments
./envir_test.go:25: undefined: GetGoroot
./envir_test.go:40: undefined: GetAllGopath
./envir_test.go:81: undefined: GetSrcDirs
./envir_test.go:83: undefined: GetAllGopath
./envir_test.go:90: undefined: GetGoroot
FAIL    command-line-arguments [build failed]

Kami melihat bahawa, sama seperti menentukan fail kod sumber untuk disusun atau dijalankan, atur cara arahan akan menyusun atau menjalankan fail kod sumber yang ditentukan. Hasilkan pakej kod tiruan - "argumen baris arahan". Walau bagaimanapun, ujian itu tidak lulus. Tetapi sebabnya bukan kerana ujian itu gagal, tetapi kompilasi itu gagal. Untuk program arahan yang menjalankan ujian ini, fail kod sumber ujian envir_test.go tergolong dalam pakej kod "command-line-arguments". Selain itu, fail kod sumber ujian ini menggunakan fungsi dalam fail kod sumber perpustakaan envir.go. Walau bagaimanapun, ia tidak memaparkan pakej kod yang mana fail kod sumber pustaka ini diimport. Ini jelas akan menyebabkan ralat kompilasi. Jika kita ingin menyelesaikan masalah ini, kita juga perlu menambah fail kod sumber yang diuji oleh fail kod sumber ujian ini apabila melaksanakan arahan. Contohnya ialah:

hc@ubt:~/golang/goc2p/src/pkgtool$ go test envir_test.go envir.go
ok      command-line-arguments    0.010s

Kini, kami sengaja gagal dalam ujian dalam pakej pkgtool. Sekarang mari kita jalankan ujian sekali lagi:

hc@ubt:~$ go test basic cnet/ctcp pkgtool
ok      basic   0.010s
ok      cnet/ctcp       2.015s
--- FAIL: TestGetSrcDirs (0.00 seconds)
        envir_test.go:85: Error: The src dir '/usr/local/go/src/pkg' is incorrect.
FAIL
FAIL    pkgtool 0.009s

Kami tahu daripada maklumat ringkasan dalam contoh di atas bahawa ujian dalam fungsi ujian TestGetSrcDirs envir_test.go dalam fail kod sumber ujian gagal. Dalam baris maklumat yang mengandungi nama fail sumber ujian yang gagal dalam ujian, nombor yang dipisahkan bertindih serta-merta selepas nama fail sumber ujian ialah nombor baris tempat mesej ralat terletak dan nombor yang dipisahkan bertindih selepas baris nombor ialah mesej ralat. Kandungan mesej ralat ini adalah tulisan pengguna. Selain itu, baris terakhir maklumat ringkasan diawali dengan "GAGAL". Ini menunjukkan bahawa ujian untuk pakej kod pkgtool tidak lulus. Sebab kegagalan diterangkan dalam mesej sebelumnya.

Secara amnya, kami akan meletakkan fail kod sumber ujian dan fail kod sumber yang sedang diuji dalam pakej kod yang sama. Selain itu, nama pakej yang diisytiharkan dalam fail kod sumber ini juga adalah sama. Di samping itu, kami mempunyai pilihan lain, iaitu, nama pakej yang diisytiharkan dalam fail kod sumber ujian boleh menjadi nama pakej ditambah akhiran "_test". Kami memanggil fail kod sumber ujian jenis ini sebagai fail kod sumber ujian di luar pakej. Walau bagaimanapun, terdapat kelemahan untuk menguji fail kod sumber di luar pakej, iaitu entiti program persendirian peringkat pakej dalam fail kod sumber yang sedang diuji tidak boleh diuji dalam fungsi ujian mereka, seperti pembolehubah peribadi peringkat pakej, fungsi, dan jenis struktur. Ini kerana pakej kod yang dimiliki oleh kedua-duanya adalah berbeza. Oleh itu, kami biasanya jarang menulis fail kod sumber ujian di luar pakej.

Perihal tag

Bahagian pemprosesan teg bagi perintah

go test sangat besar dan rumit sehingga pembangun bahasa Go perlu memisahkan bahagian logik ini daripada badan utama program arahan go test dan mencipta fail kod sumber yang berasingan. Oleh kerana perintah go test mengandungi tindakan kompilasi, ia boleh menerima semua teg yang tersedia untuk perintah go build. Di samping itu, ia mempunyai banyak tanda unik. Teg ini digunakan untuk mengawal tindakan perintah itu sendiri, sesetengahnya digunakan untuk mengawal dan menyediakan proses dan persekitaran ujian, dan sesetengahnya digunakan untuk menjana keputusan ujian dan maklumat statistik yang lebih terperinci.

Beberapa teg yang lebih biasa yang boleh digunakan dengan perintah go test ialah -c, -i dan -o. Kedua-dua ini ialah teg yang digunakan untuk mengawal tindakan perintah go test itu sendiri. Lihat jadual di bawah untuk butiran.

Jadual 0-6 go testTanda perihalan perintah

Nama tanda Tanda perihalan th>
-c Menghasilkan fail boleh laku untuk menjalankan ujian, tetapi tidak melaksanakannya. Fail boleh laku ini akan dinamakan "pkg.test", dengan "pkg" ialah nama elemen terakhir laluan import pakej kod yang sedang diuji.
-i Pasang/pasang semula pakej pergantungan yang diperlukan untuk menjalankan ujian, tetapi tidak menyusun dan menjalankan kod ujian.
-o Menentukan nama fail boleh laku yang digunakan untuk menjalankan ujian. Menambahkan teg ini tidak akan menjejaskan perjalanan kod ujian melainkan teg
标记名称 标记描述
-c 生成用于运行测试的可执行文件,但不执行它。这个可执行文件会被命名为“pkg.test”,其中的“pkg”即为被测试代码包的导入路径的最后一个元素的名称。
-i 安装/重新安装运行测试所需的依赖包,但不编译和运行测试代码。
-o 指定用于运行测试的可执行文件的名称。追加该标记不会影响测试代码的运行,除非同时追加了标记-c-i
atau

turut dilampirkan.

go testTeg di atas boleh digunakan bersama. Tujuan menggunakannya bersama-sama adalah untuk membenarkan perintah -c memasang pakej bergantung dan menyusun kod ujian, tetapi tidak menjalankan ujian. Dengan kata lain, biarkan program arahan berjalan melalui semua proses sebelum menjalankan ujian. Ini boleh digunakan untuk menguji proses ujian. Ambil perhatian bahawa selepas menambah tag , program arahan akan menyimpan fail boleh laku yang digunakan untuk menjalankan ujian dalam direktori semasa.

[Cadangan berkaitan: Pergi tutorial video, Pengajaran pengaturcaraan

]

Atas ialah kandungan terperinci Apakah fungsi ujian go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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
Artikel sebelumnya:Apa itu Revive in GoArtikel seterusnya:Apa itu Revive in Go