Jak uruchomić konkretne przypadki testowe w GoogleTest

Próbuję napisać funkcję / metodę dla mojego projektu, która zapyta użytkownika, które wszystkie przypadki testowe zamierzasz uruchomić? Wygląda jak poniżej...,

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

Więc teraz wyzwanie polega na tym, że podczas uruchamiania projektu powinno mnie zapytać, jakie wszystkie przypadki testowe chciałbyś wykonać? Jeśli wybieram Test_Cases_1 i Test_Cases_N. Następnie powinien wykonać te dwa przypadki testowe i powinien wykluczyć wszystkie inne z Test_Cases_2 to ..... W oknie wyników również chciałbym zobaczyć wyniki Test_Cases_1 i Test_Cases_N.

Więc jeśli zobaczy GoogleTest, istnieje metoda o nazwie test_case_to_run_count(); Ale wszystkie test cases są rejestrowane za pomocą metody Test_F (). Zrobiłem więc wiele analiz, ale nadal nie znalazłem żadnego rozwiązania. Proszę, pomóż mi.

Author: Rasmi Ranjan Nayak, 2012-08-22

3 answers

Możesz użyć opcji zaawansowanych do uruchomienia testów Google.

Aby uruchomić tylko niektóre testy jednostkowe, możesz użyć opcji linii poleceń --gtest_filter=Test_Cases1* z wartością, która jest wyrażeniem regularnym. Myślę, że to rozwiąże twój problem.

Upd:

Pytanie brzmiało, jak uruchomić konkretne testy. Integracja gtest z Twoim GUI to kolejna rzecz, której tak naprawdę nie mogę skomentować, ponieważ nie podałeś szczegółów swojego podejścia. Jednak uważam, że następujące podejście może być dobry początek:
  1. Uzyskaj wszystkie testy, uruchamiając testy z --gtest_list_tests
  2. przetworzyć te dane do GUI
  3. Wybierz przypadki testowe, które chcesz uruchomić
  4. Uruchom test wykonywalny z opcją --gtest_filter
 125
Author: nogard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-28 04:18:40

Podsumowanie @Rasmi Ranjan Nayak i @ noyak odpowiedzi i dodanie innej opcji:

Na konsoli

Powinieneś użyć flagi --gtest_filter, Jak

--gtest_filter=Test_Cases1*

(można to również zrobić w Properties / Configuration Properties|Debugging|Command Arguments)

O środowisku

Należy ustawić zmienną GTEST_FILTER Jak

export GTEST_FILTER = "Test_Cases1*"

Na kod

Należy ustawić flagę filter, Jak

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

Tak, że Twoja główna funkcja staje się czymś jak

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

Zobacz sekcję uruchamianie podzbioru testów aby uzyskać więcej informacji na temat składni ciągu znaków, którego możesz użyć.

 52
Author: J. C. Leitão,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-29 18:23:12

Wreszcie dostałem jakąś odpowiedź, ::test::GTEST_FLAG(list_tests) = true; //z twojego programu, a nie konsoli w.r.T.

Jeśli chcesz użyć --gtest_filter =*; /* =*, =xyz*... etc*/ // musisz ich używać w konsoli.

Więc moim wymogiem jest używanie ich z programu, a nie z konsoli.

Updated:-

W końcu dostałem odpowiedź na aktualizację tego samego z programu.

 ::testing::GTEST_FLAG(filter) = "*Counter*:*IsPrime*:*ListenersTest.DoesNotLeak*";//":-:*Counter*";
      InitGoogleTest(&argc, argv);
RUN_ALL_TEST();
Dzięki za wszystkie odpowiedzi. Jesteście wspaniali.
 22
Author: Rasmi Ranjan Nayak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-24 06:55:33