Pergi ke ujian liputan, jika kenyataan tidak dilindungi
editor php Baicao hari ini memperkenalkan anda kepada kaedah liputan ujian. Dalam proses pembangunan perisian, liputan ujian ialah penunjuk penting, yang boleh membantu kami menilai tahap liputan kod mengikut kes ujian. Dan jika kita mendapati bahawa terdapat kenyataan yang tidak dilindungi, kita boleh menyelesaikan masalah ini melalui beberapa cara. Dalam artikel ini, kami akan meneroka cara menguji liputan dan cara menangani kenyataan yang tidak dilindungi.
Kandungan soalan
Saya mempunyai fungsi go yang dipanggil setupConfig() dan saya mempunyai Test_setupconfig untuk mengujinya dan ia diuji dengan baik. Tetapi apabila saya mengujinya untuk liputan dan melihat laporan HTML, ia menunjukkan bahawa pengendalian saya terhadap beberapa ralat yang dikembalikan oleh pakej Viper tidak dilindungi. Mengapa ini tidak dilindungi? Bagaimana saya harus menangani ini?
Penyelesaian
Laporan liputan memberitahu anda jumlah kod yang telah dilaksanakan semasa ujian. Perkara yang anda lihat ialah penyataan if
块中的 return
ini tidak diuji, yang bermaksud anda tidak mempunyai sebarang ujian unit yang direka untuk gagal dan mengembalikan ralat. Semasa menguji kod anda berfungsi apabila diberikan input yang betul, adalah penting juga untuk memastikan bahawa ujian gagal dengan betul dan selamat apabila diberikan input yang salah.
Walau bagaimanapun, ini adalah situasi yang pelik kerana ralat ini bukan dalam pakej anda sendiri, ralat ini datang daripada isu dengan perpustakaan viper
包。此时,重要的是要问自己一个问题“我真正测试的是什么?”。如果您使用 viper
包,那么假设该包经过了彻底的测试,并且通过为 viper 错误创建您自己的测试,您只是在这些测试上加倍,而没有真正的改进。出于这个原因,有时我们选择省略测试这些分支,因为实际上,如果 viper 包错误 - 并假设您的所有输入都是静态的并且像所示的那样进行硬编码 - 那么这不是您的代码的问题,而是 viper
.
Jika anda benar ingin mendapatkan liputan 100% dan menguji semua pokok keputusan, satu-satunya cara ialah meletakkan pakej viper
di belakang beberapa abstraksi. Kemungkinan besar ia adalah antara muka yang disalurkan ke dalam fungsi tersebut, membenarkan berbilang pelaksanaan sama ada anda sedang menjalankan dalam pengeluaran atau ujian.
Setelah berkata demikian, pengekodan keras semua nilai dalam fungsi seperti ini tidak disyorkan. Sebaik-baiknya, anda mahu nilai struktur konfigurasi datang daripada fail konfigurasi setempat, pembolehubah persekitaran, bendera baris arahan atau gabungannya. Dengan melakukan ini, anda menjadikan fungsi persediaan ini menerima antara muka untuk mendapatkan semula konfigurasi, menjadikan fungsi itu mudah untuk diuji kerana apa yang anda perlu lakukan ialah mengejek pelaksanaan antara muka dalam ujian anda. Jadi ia akan kelihatan seperti ini:
config.go
:
type ConfigController interface { GetInput() Config } func setupConfig(controller ConfigController) error { config := controller.GetInput() // your code here }
config_test.go
:
type mockConfigController struct {} func (m *mockConfigController) GetConfig() Config { return Config{ // your config here } } func Test_setupConfig(t *testing.T) { configController := &mockConfigController{} err := setupConfig(configController) // rest of test here }
Dengan melakukan ini dan menyediakan antara muka terima untuk fungsi setupConfig()
anda, ini bermakna anda boleh menyediakan pelaksanaan fungsi untuknya apabila dijalankan dalam pengeluaran, tetapi juga menggunakan data ujian berkod keras untuk mensimulasikannya semasa menjalankan ujian. Ia juga sering digunakan apabila berinteraksi dengan perkhidmatan lain, seperti pangkalan data. Daripada perlu memulakan pangkalan data dan menyambung kepadanya apabila anda menjalankan ujian, anda boleh meminta kod anda menerima antara muka yang memberitahunya cara berinteraksi dengan pangkalan data dan mensimulasikannya dalam ujian anda. Ini membolehkan anda mengasingkan bahagian kod anda dan menguji perkara yang anda mahu sahaja.
Atas ialah kandungan terperinci Pergi ke ujian liputan, jika kenyataan tidak dilindungi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

OpenSSL, sebagai perpustakaan sumber terbuka yang digunakan secara meluas dalam komunikasi yang selamat, menyediakan algoritma penyulitan, kunci dan fungsi pengurusan sijil. Walau bagaimanapun, terdapat beberapa kelemahan keselamatan yang diketahui dalam versi sejarahnya, yang sebahagiannya sangat berbahaya. Artikel ini akan memberi tumpuan kepada kelemahan umum dan langkah -langkah tindak balas untuk OpenSSL dalam sistem Debian. Debianopenssl yang dikenal pasti: OpenSSL telah mengalami beberapa kelemahan yang serius, seperti: Kerentanan Pendarahan Jantung (CVE-2014-0160): Kelemahan ini mempengaruhi OpenSSL 1.0.1 hingga 1.0.1f dan 1.0.2 hingga 1.0.2 versi beta. Penyerang boleh menggunakan kelemahan ini untuk maklumat sensitif baca yang tidak dibenarkan di pelayan, termasuk kunci penyulitan, dll.

Masalah Threading Giliran di GO Crawler Colly meneroka masalah menggunakan Perpustakaan Colly Crawler dalam bahasa Go, pemaju sering menghadapi masalah dengan benang dan permintaan beratur. � ...

Perpustakaan yang digunakan untuk operasi nombor terapung dalam bahasa Go memperkenalkan cara memastikan ketepatannya ...

Laluan Pembelajaran Backend: Perjalanan Eksplorasi dari Front-End ke Back-End sebagai pemula back-end yang berubah dari pembangunan front-end, anda sudah mempunyai asas Nodejs, ...

Artikel ini memperkenalkan pelbagai kaedah dan alat untuk memantau pangkalan data PostgreSQL di bawah sistem Debian, membantu anda memahami pemantauan prestasi pangkalan data sepenuhnya. 1. Gunakan PostgreSQL untuk membina pemantauan PostgreSQL sendiri menyediakan pelbagai pandangan untuk pemantauan aktiviti pangkalan data: PG_STAT_ACTIVITY: Memaparkan aktiviti pangkalan data dalam masa nyata, termasuk sambungan, pertanyaan, urus niaga dan maklumat lain. PG_STAT_REPLITI: Memantau status replikasi, terutamanya sesuai untuk kluster replikasi aliran. PG_STAT_DATABASE: Menyediakan statistik pangkalan data, seperti saiz pangkalan data, masa komitmen/masa rollback transaksi dan petunjuk utama lain. 2. Gunakan alat analisis log pgbadg

Perbezaan antara percetakan rentetan dalam bahasa Go: perbezaan kesan menggunakan fungsi println dan rentetan () sedang ...

Di bawah rangka kerja beegoorm, bagaimana untuk menentukan pangkalan data yang berkaitan dengan model? Banyak projek beego memerlukan pelbagai pangkalan data untuk dikendalikan secara serentak. Semasa menggunakan beego ...

Masalah menggunakan redisstream untuk melaksanakan beratur mesej dalam bahasa Go menggunakan bahasa Go dan redis ...
