Подтвердить что ты не робот

Как запустить определенные тестовые примеры в 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(). Итак, я сделал много анализа, но до сих пор не нашел решения. Пожалуйста, помогите мне.

4b9b3361

Ответ 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();

Итак, спасибо за все ответы.

Вы, люди, велики.