Как запустить конкретные тестовые случаи в GoogleTest
Я пытаюсь написать функцию / метод для моего проекта, который будет спрашивать пользователя, Какие все тестовые случаи вы собираетесь запустить?
Это выглядит как ниже...,
Test_Cases_1
|_TestNo1
|_TestNo2....so on
Test_Cases_2
|_TestNo1
|_TestNo2....so on
....
....so on
Test_Cases_N
|_TestNo1
|_TestNo2....so on
Итак, теперь проблема заключается в том, что при запуске проекта он должен подсказать мне, какие все тестовые случаи вы хотели бы выполнить?
Если я выберу Test_Cases_1 и Test_Cases_N. Затем он должен выполнить эти два тестовых случая и должен исключить все остальные из Test_Cases_2 to ..... В окне результатов также я хотел бы видеть результаты Test_Cases_1 и Test_Cases_N.
Итак, если я увижу GoogleTest, есть метод под названием test_case_to_run_count();
Но все это test cases регистрируются с помощью метода Test_F ().
Итак, я сделал много анализа, но до сих пор не нашел никакого решения.
Пожалуйста, помогите мне.
3 ответов:
вы могли бы использовать дополнительные параметры для запуска тестов в Google.
для запуска только некоторых модульных тестов вы можете использовать
--gtest_filter=Test_Cases1*параметр командной строки со значением, которое является регулярным выражением. Я думаю, что это решит вашу проблему.UPD:
ну, вопрос был в том, как выполнить специфические тесты. Интеграция gtest с вашим графическим интерфейсом-это еще одна вещь, которую я не могу комментировать, потому что вы не предоставили подробностей своего подхода. Однако Я считаю, что следующий подход может быть хорошим началом:
- получить все тестовые случаи, запустив тесты с
--gtest_list_tests- проанализируйте эти данные в свой графический интерфейс
- выберите тестовые случаи, которые вы хотите запустить ro
- запустить тестовый исполняемый файл с параметром
--gtest_filter
суммируя ответы @Rasmi Ranjan Nayak и @nogard и добавляя еще один вариант:
консоль
вы должны использовать флаг
--gtest_filter, как--gtest_filter=Test_Cases1*(вы также можете сделать это в свойствах / свойствах конфигурации / отладке / аргументах команды)
в среду
вы должны установить переменную
GTEST_FILTERкакexport GTEST_FILTER = "Test_Cases1*"код
вы должны установить флаг
filter, как::testing::GTEST_FLAG(filter) = "Test_Cases1*";так что ваша основная функция становится чем-то вроде
int main(int argc, char **argv) { ::testing::InitGoogleTest(&argc, argv); ::testing::GTEST_FLAG(filter) = "Test_Cases1*"; return RUN_ALL_TESTS(); }раздел запуск подмножества тестов для получения дополнительной информации о синтаксисе строки, которую вы можете использовать.
наконец-то я получил ответ,
::test::GTEST_FLAG(list_tests) = true;//из вашей программы, а не из консоли w.r.t.если вы хотите использовать
--gtest_filter =*;/* =*, =xyz*... etc*/// вы должны использовать их в консоли.Итак, мое требование-использовать их из программы, а не из консоли.
Updated:-наконец-то я получил ответ на обновление из программы.
::testing::GTEST_FLAG(filter) = "*Counter*:*IsPrime*:*ListenersTest.DoesNotLeak*";//":-:*Counter*"; InitGoogleTest(&argc, argv); RUN_ALL_TEST();Итак, Спасибо за все ответы.
вы замечательные люди.
Comments