Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Melaksanakan Ujian Go Secara Berurutan merentas Pelbagai Pakej?

Bagaimana untuk Melaksanakan Ujian Go Secara Berurutan merentas Pelbagai Pakej?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-04 07:59:30222semak imbas

How to Execute Go Tests Sequentially across Multiple Packages?

Cara Melaksanakan Ujian merentas Pelbagai Pakej Go Secara Berurutan

Apabila melaksanakan ujian untuk berbilang pakej menggunakan ujian go ./..., ia adalah penting untuk mempertimbangkan aspek keselarian. Secara lalai, ujian dijalankan serentak merentas pakej. Walau bagaimanapun, senario tertentu, seperti ujian berasaskan pangkalan data, memerlukan pelaksanaan berurutan.

Dalam contoh yang diberikan, perbalahan pangkalan data timbul disebabkan oleh pelaksanaan ujian selari. Setiap fail ujian mentakrifkan pembolehubah pangkalan data global, yang boleh menyebabkan konflik apabila ujian dijalankan serentak.

Penyelesaian:

Untuk menguatkuasakan pelaksanaan berurutan merentas pakej, gunakan bendera -p tanpa dokumen bersama-sama dengan ujian go seperti berikut:

go test -p 1 ./...

Bendera -p 1 membina dan menguji semua pakej dalam siri, menyelesaikan isu perbalahan.

Penyelesaian Alternatif (Menggunakan Skrip Shell) :

Jika menggunakan bendera -p 1 tidak boleh dilaksanakan, pendekatan berasaskan skrip shell alternatif boleh digunakan. Berikut ialah contoh skrip Bash:

find . -name '*.go' -printf '%h\n' | sort -u | xargs -n1 -P1 go test

Skrip ini menyenaraikan semua subdirektori yang mengandungi fail .go, mengalih keluar pendua dan menjalankan ujian go pada setiap subdirektori secara berurutan.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Ujian Go Secara Berurutan merentas Pelbagai Pakej?. 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