Soalan ini membincangkan batasan ujian os.Keluar senario dalam Go menggunakan kaedah memanggil semula binari dan menyemak nilai keluar. Walaupun kaedah ini berkesan untuk menguji panggilan os.Exit(), ia menimbulkan cabaran apabila melibatkan ujian liputan dengan alatan seperti coveralls.io dan Goveralls.
Isu utama berpunca daripada fakta bahawa binari yang dipanggil semula tidak tidak dijalankan dengan bendera -cover, yang diperlukan untuk maklumat liputan dikumpulkan. Akibatnya, alat ujian liputan gagal mengenali bahawa fungsi yang diuji, Crasher(), yang memanggil os.Exit(), telah dilaksanakan.
Untuk menangani masalah ini, penyelesaian yang dicadangkan melibatkan pemfaktoran semula kod kepada buat os.Keluar atau log.Fungsi Fatalf boleh diganti. Dengan menyimpan fungsi asal dan memulihkannya selepas ujian, kod ujian boleh memintas fungsi ini dan melaksanakannya di bawah keadaan terkawal.
Dalam contoh yang diberikan, fungsi myExit tersuai ditakrifkan untuk menggantikan os.Exit dan a fungsi myFatalf tersuai untuk menggantikan log.Fatalf. Dalam ujian, fungsi ini dilaksanakan dan hujahnya ditangkap. Ini membolehkan ujian mengesahkan kod keluar atau mesej log yang betul, memastikan bahawa fungsi yang diuji sememangnya dilaksanakan seperti yang diharapkan.
Dengan mengikuti pendekatan ini, adalah mungkin untuk mendapatkan liputan penuh fungsi yang diuji, walaupun apabila ia melibatkan panggilan os.Exit() atau log.Fatalf(). Ini membolehkan pembangun menguji kod mereka secara menyeluruh dan memastikan maklumat liputan yang dilaporkan oleh alatan seperti coveralls.io dan Goveralls adalah tepat dan lengkap.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencapai Liputan Ujian Penuh untuk Fungsi Go Menggunakan `os.Exit()` dengan Coveralls?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!