Menggunakan Google Test 1.6 (Windows 7, Visual Studio C ++). Bagaimana cara mematikan tes yang diberikan? (alias bagaimana cara mencegah pengujian berjalan). Apakah ada yang bisa saya lakukan selain berkomentar di seluruh tes?
googletest
Pengguna
sumber
sumber
Anda juga dapat menjalankan subset pengujian , menurut dokumentasinya:
Menjalankan Subset dari Tes
Bukan solusi tercantik, tapi berhasil.
sumber
Anda sekarang dapat menggunakan
GTEST_SKIP()
makro untuk melewati pengujian secara bersyarat pada waktu proses. Sebagai contoh:Perhatikan bahwa ini adalah fitur yang sangat baru sehingga Anda mungkin perlu memperbarui perpustakaan GoogleTest Anda untuk menggunakannya.
sumber
GTEST_SKIP()
tersedia dari 1.10.0.GTEST_SKIP_("some message")
(perhatikan garis bawah)Berikut ekspresi untuk menyertakan pengujian yang namanya memiliki string foo1 atau foo2 di dalamnya dan mengecualikan pengujian yang namanya memiliki string bar1 atau bar2 di dalamnya:
sumber
Saya lebih suka melakukannya dalam kode:
Saya dapat mengomentari kedua baris untuk menjalankan semua tes, menghapus komentar pada baris pertama untuk menguji satu fitur yang sedang saya selidiki / kerjakan, atau hapus komentar pada baris kedua jika tes rusak tetapi saya ingin menguji yang lainnya.
Anda juga dapat menguji / mengecualikan rangkaian fitur dengan menggunakan wildcard dan menulis daftar, "MyLibrary.TestNetwork *" atau "-MyLibrary.TestFileSystem *".
sumber
export GTEST_FILTER='*'
.*
" tidak "". Sebaliknya saya hanya akan menggunakan variabel lingkungan lain yang menggantikan filter.Jika lebih dari satu tes diperlukan dilewati
sumber
Untuk pendekatan lain, Anda bisa menggabungkan pengujian Anda dalam sebuah fungsi dan menggunakan pemeriksaan bersyarat normal pada waktu proses untuk hanya mengeksekusinya jika Anda mau.
Ini berguna bagi saya karena saya mencoba menjalankan beberapa pengujian hanya jika sistem mendukung dual stack IPv6.
Secara teknis, barang dualstack seharusnya tidak menjadi pengujian unit karena bergantung pada sistem. Tetapi saya tidak dapat benar-benar membuat tes integrasi apa pun sampai saya mengujinya tetap berfungsi dan ini memastikan bahwa itu tidak akan melaporkan kegagalan ketika itu bukan kesalahan kode.
Adapun pengujiannya saya memiliki objek rintisan yang mensimulasikan dukungan sistem untuk dualstack (atau kekurangan) dengan membangun soket palsu.
Satu-satunya downside adalah bahwa hasil tes dan jumlah tes akan berubah yang dapat menyebabkan masalah dengan sesuatu yang memantau jumlah tes yang berhasil.
Anda juga dapat menggunakan ASSERT_ * daripada EQUAL_ *. Tegaskan tentang sisa pengujian jika gagal. Mencegah banyak hal yang berlebihan dibuang ke konsol.
sumber
Saya memiliki kebutuhan yang sama untuk tes bersyarat, dan saya menemukan solusi yang bagus. Saya mendefinisikan makro TEST_C yang bekerja seperti makro TEST_F, tetapi memiliki parameter ketiga, yang merupakan ekspresi boolean, runtime yang dievaluasi di main.cpp SEBELUM pengujian dimulai. Pengujian yang mengevaluasi salah tidak dijalankan. Makro itu jelek, tetapi terlihat seperti:
Selain itu, di main.cpp Anda, Anda memerlukan loop ini untuk mengecualikan pengujian yang mengevaluasi false:
sumber