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

877   3  

3 ответов:

вы могли бы использовать дополнительные параметры для запуска тестов в Google.

для запуска только некоторых модульных тестов вы можете использовать --gtest_filter=Test_Cases1* параметр командной строки со значением, которое является регулярным выражением. Я думаю, что это решит вашу проблему.

UPD:

ну, вопрос был в том, как выполнить специфические тесты. Интеграция gtest с вашим графическим интерфейсом-это еще одна вещь, которую я не могу комментировать, потому что вы не предоставили подробностей своего подхода. Однако Я считаю, что следующий подход может быть хорошим началом:

  1. получить все тестовые случаи, запустив тесты с --gtest_list_tests
  2. проанализируйте эти данные в свой графический интерфейс
  3. выберите тестовые случаи, которые вы хотите запустить ro
  4. запустить тестовый исполняемый файл с параметром --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

    Ничего не найдено.