Включая google тесты в проекте Qt

Я пытаюсь начать тестирование своего проекта Qt с помощью тестов Google. Я читаю Qt Docs, но есть только описание, как создавать и запускать тесты, но не интегрировать. Итак, у меня было несколько вопросов.

  1. Должен ли я создать подпроект или создать отдельный? Где я должен разместить тестовый проект?

Теперь я сохраняю тестовый проект так:

project.pro
|
--- subproject1.pri
|
--- subproject2.pri
|
| ...
|
--- test_project.pri
|
--- init_tests.cpp

Это правильный способ размещения тестов?

  1. Откуда мне запускать этот код?

::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();

Теперь я запускаю его из init_tests.cpp, Тогда я звоню init_tests от main функция. Это кажется неправильным, но я не знаю другого способа сделать это.

  1. Поэтому, если я использую ранее описанный способ интеграции тестов, как я могу удалить его из развертывания?

  2. Где я должен размещать тесты в git repo? Я создал ветку для своих тестов, затем слил ее с мастером. Это верно?

Спасибо за ответы, извините за мой ломаный английский.

3

Решение

Ответ на вопрос 4: это кажется правильным для первой реализации, но затем эта ветвь должна умереть, вы не хотите иметь ветку с тестом. Фиксация, сделанная на любых ветвях, должна включать связанный модульный тест и должна передаваться только тогда, когда тесты зеленого цвета …

Ответ на вопрос 1/2: ваши тесты должны находиться в отдельном исполняемом файле, который не следует отправлять вашему клиенту. Обычно у вас есть один pro-файл для каждой исполняемой цели. Поэтому я бы предпочел сделать:

project.pro
|
--- subproject1.pri
|
--- subproject2.pri
|
| ...
|
test_project.pro
--- test_project.pri
|
--- main.cpp

С main.cpp, удерживающим ваши строки:

:testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();

.. вдруг становится очевидным, не так ли?

(и, конечно, только test_project.pro содержит include и ссылку на Google Test)

Ответ на вопрос 3: тоже станет очевидным.

Примечание: для того, чтобы это работало, предполагается, что то, что вы делаете в subproject1 и subproject2, доступно, то есть эти библиотеки либо статические и включены в test_project.pro, либо в динамическую lib с экспортированными символами.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]