Perangkap biasa dalam ujian unit berfungsi C++ termasuk: Pergantungan pada keadaan luaran: Elakkan menggunakan pembolehubah global atau statik untuk memastikan kebebasan ujian. Jangan mengejek kebergantungan: Gunakan stub atau olok-olok untuk mengejek objek luaran untuk mengelakkan tingkah laku yang tidak dijangka atau kegagalan ujian. Ujian terlalu luas: hanya tegaskan kelakuan fungsi yang sedang diuji, elakkan pernyataan yang rumit dan logik tambahan. Abaikan syarat sempadan: Sertakan kes ujian untuk nilai sempadan untuk menyemak keberkesanan semakan sempadan. Jangan kendalikan pengecualian: Semak secara eksplisit pengecualian yang mungkin dilemparkan oleh fungsi untuk mengelakkan pengendalian pengecualian global daripada menutup kegagalan ujian.
Kesalahan Biasa Ujian Unit Fungsi C++
Ujian unit fungsi direka untuk menguji kefungsian fungsi secara berasingan, tetapi terdapat beberapa perangkap biasa yang perlu dielakkan semasa menulis ujian ini.
Bergantung pada keadaan luaran
Ujian hendaklah bebas daripada keadaan luaran. Elakkan daripada menggunakan pembolehubah global atau statik dalam ujian kerana ini menjejaskan ujian lain dan ketepatan aplikasi.
Jangan mengejek dependencies
Untuk fungsi yang bergantung pada objek luaran, ia harus diejek dengan stub atau ejekan. Memanggil kebergantungan secara langsung boleh menyebabkan kelakuan yang tidak dijangka atau kegagalan ujian.
Terlalu luas
Ujian seharusnya hanya menegaskan kelakuan fungsi yang diuji. Elakkan daripada menggunakan pernyataan kompleks yang mengandungi panggilan fungsi tambahan atau logik kompleks, kerana ini meningkatkan kebolehselenggaraan dan kebolehbacaan ujian anda.
Tidak menyemak syarat sempadan
Adalah penting bahawa kes ujian merangkumi sempadan, termasuk nilai input atau pulangan yang mungkin menyebabkan semakan sempadan gagal atau berkelakuan dengan cara yang tidak ditentukan.
Tiada pengendalian pengecualian
Jika fungsi boleh membuang pengecualian, ujian harus secara jelas memeriksa kejadian pengecualian ini. Elakkan pengendalian pengecualian global kerana ini boleh menutup kegagalan ujian.
Contoh praktikal:
Berikut ialah contoh menguji fungsi sum
yang mengira hasil tambah dua nombor:
#include <gtest/gtest.h> TEST(SumFunction, PositiveIntegers) { ASSERT_EQ(5, sum(2, 3)); } TEST(SumFunction, NegativeIntegers) { ASSERT_EQ(-1, sum(-2, -1)); } TEST(SumFunction, BoundaryConditions) { ASSERT_EQ(INT_MAX, sum(INT_MAX, 0)); ASSERT_EQ(INT_MIN, sum(INT_MIN, 0)); }
Dalam contoh ini, kita mengelakkan perangkap biasa:
Atas ialah kandungan terperinci Perangkap biasa dalam ujian unit fungsi C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!