Как запустить определенные тестовые примеры в 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().
Итак, я сделал много анализа, но до сих пор не нашел решения.
Пожалуйста, помогите мне.
Ответы
Ответ 1
Вы можете использовать расширенные параметры для запуска тестов Google.
Для запуска только некоторых модульных тестов вы можете использовать опцию командной строки --gtest_filter=Test_Cases1*
со значением, которое является регулярным выражением. Я думаю, что это решит вашу проблему.
UPD:
Ну, вопрос в том, как выполнить конкретные тестовые примеры. Интеграция gtest с вашим графическим интерфейсом - это еще одна вещь, которую я не могу прокомментировать, потому что вы не указали детали своего подхода. Однако я считаю, что следующий подход может быть хорошим началом:
- Получить все тестовые файлы, выполнив тесты с помощью
--gtest_list_tests
- Разберите эти данные в свой графический интерфейс
- Выберите тестовые примеры, которые вы хотите запустить ro
- Запустить тестовый исполняемый файл с опцией
--gtest_filter
Ответ 2
Подведение итогов @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();
}
Подробнее о синтаксисе используемой строки см. в разделе Запуск подмножества тестов.
Ответ 3
Наконец, я получил ответ,
::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();
Итак, спасибо за все ответы.
Вы, люди, велики.