Pertanyaan Cara menjalankan kasus uji spesifik di GoogleTest


Saya mencoba untuk menulis fungsi / metode untuk proyek saya, yang akan menanyakan kepada pengguna yang mana semua test case akan Anda jalankan? Sepertinya di bawah ...,

Test_Cases_1
         |_TestNo1
         |_TestNo2....so on
Test_Cases_2
         |_TestNo1
         |_TestNo2....so on
....
....so on
Test_Cases_N
         |_TestNo1
         |_TestNo2....so on

Jadi, sekarang tantangannya adalah ketika menjalankan proyek itu harus meminta saya apa semua kasus uji yang ingin Anda jalankan? Jika saya pilih Test_Cases_1 dan Test_Cases_N. Maka harus menjalankan dua kasus uji dan harus mengecualikan semua lainnya dari Test_Cases_2 to ..... Pada jendela hasil juga saya ingin melihat hasilnya Test_Cases_1 dan Test_Cases_N.

Jadi, jika saya akan melihat GoogleTest, ada metode yang disebut test_case_to_run_count(); Tapi semua itu test cases semakin terdaftar dengan metode Test_F (). Jadi, saya melakukan banyak analisis, tetapi tetap tidak menemukan solusi apa pun. Tolong bantu aku.


75
2017-08-22 15:04


asal


Jawaban:


Anda bisa menggunakannya opsi lanjutan untuk menjalankan tes Google.

Untuk menjalankan hanya beberapa tes unit yang dapat Anda gunakan --gtest_filter=Test_Cases1* opsi baris perintah dengan nilai yang merupakan ekspresi reguler. Saya pikir itu akan menyelesaikan masalah Anda.

UPD:

Nah, pertanyaannya adalah bagaimana caranya menjalankan kasus uji spesifik. Integrasi gtest dengan GUI Anda adalah hal lain, yang saya tidak dapat berkomentar, karena Anda tidak memberikan detail pendekatan Anda. Namun saya yakin pendekatan berikut mungkin merupakan awal yang baik:

  1. Dapatkan semua testcases dengan menjalankan tes dengan --gtest_list_tests
  2. Uraikan data ini ke GUI Anda
  3. Pilih test case yang Anda inginkan ro run
  4. Jalankan uji yang dapat dieksekusi dengan opsi --gtest_filter

120
2017-08-22 15:10



Merangkum @Rasmi Ranjan Nayak dan jawaban @nogard dan menambahkan opsi lain:

Di konsol

Anda harus menggunakan bendera --gtest_filter, suka

--gtest_filter=Test_Cases1*

(Anda juga dapat melakukan ini di Properties | Configuration Properties | Debugging | Command Arguments)

Di lingkungan

Anda harus mengatur variabel GTEST_FILTER seperti

export GTEST_FILTER = "Test_Cases1*"

Di kode

Anda harus mengatur bendera filter, suka

::testing::GTEST_FLAG(filter) = "Test_Cases1*";

sehingga fungsi utama Anda menjadi seperti itu

int main(int argc, char **argv) {
    ::testing::InitGoogleTest(&argc, argv);
    ::testing::GTEST_FLAG(filter) = "Test_Cases1*";
    return RUN_ALL_TESTS();
}

Lihat bagian Menjalankan Subset Pengujian untuk info lebih lanjut tentang sintaks string yang dapat Anda gunakan.


47
2017-08-23 12:27



Akhirnya saya mendapat jawaban, ::test::GTEST_FLAG(list_tests) = true; // Dari program Anda, bukan w.r.t console.

Jika Anda ingin menggunakannya --gtest_filter =*;  /* =*, =xyz*... etc*/ // Anda perlu menggunakannya di Konsol.

Jadi, persyaratan saya adalah menggunakannya dari program bukan dari konsol.

Updated:-

Akhirnya saya mendapat jawaban untuk memperbarui yang sama dari program.

 ::testing::GTEST_FLAG(filter) = "*Counter*:*IsPrime*:*ListenersTest.DoesNotLeak*";//":-:*Counter*";
      InitGoogleTest(&argc, argv);
RUN_ALL_TEST();

Jadi, Terima kasih atas semua jawabannya.

Kalian orang hebat.


22