Я пытаюсь начать тестирование своего проекта Qt с помощью тестов Google. Я читаю Qt Docs, но есть только описание, как создавать и запускать тесты, но не интегрировать. Итак, у меня было несколько вопросов.
Теперь я сохраняю тестовый проект так:
project.pro
|
--- subproject1.pri
|
--- subproject2.pri
|
| ...
|
--- test_project.pri
|
--- init_tests.cpp
Это правильный способ размещения тестов?
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
Теперь я запускаю его из init_tests.cpp
, Тогда я звоню init_tests
от main
функция. Это кажется неправильным, но я не знаю другого способа сделать это.
Поэтому, если я использую ранее описанный способ интеграции тестов, как я могу удалить его из развертывания?
Где я должен размещать тесты в git repo? Я создал ветку для своих тестов, затем слил ее с мастером. Это верно?
Спасибо за ответы, извините за мой ломаный английский.
Ответ на вопрос 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 с экспортированными символами.
Других решений пока нет …