Модульное тестирование (не Qt) C++ кода в Qt Creator?
У меня есть проект C++, который не использует Qt. Я использую Qt Creator в качестве своей IDE, потому что это очень удобно.
Я читал о модульном тестировании в Qt Creator здесь, и я думаю, что Qt Test кажется довольно хорошим. Есть ли способ использовать Qt Test с моим не-Qt C++ проектом?
Обратите внимание, что на моем компьютере установлены библиотеки Qt, которые я использую для программирования. Но я не хочу, чтобы скомпилированная программа, которую я выпускаю, зависела от библиотек Qt.
Кроме того, функция, которая мне понравилась при использовании Visual Studio, заключается в том, что тесты запускаются автоматически каждый раз, когда я строю свой проект. Могу ли я сделать то же самое с Qt Creator?
Кстати, если вы можете предложить другую инфраструктуру для модульного тестирования, которую я могу легко использовать в Qt Creator, это тоже хорошо.
3 ответа
Вы также можете тестировать код (не Qt) C++ в Qt Creator с помощью GTest:
https://github.com/google/googletest/
используя этот замечательный плагин QtCreator:
https://github.com/OneMoreGres/qtc-gtest
Я переключился с QTest на GTest (для тестирования приложений Qt) по нескольким причинам, например, благодаря хорошему графическому выводу и возможности использовать фальшивую среду (GMock).
На самом деле никогда не пытался тестировать модуль без qt в QtCreator, но природа кода Qt не имеет значения. Вот как бы я пошел:
- Возьми свой обычный, не QT проект
- Добавьте родительский проект типа subdir, чтобы он действовал так же, как решение для Visual Studio.
Добавьте другой проект под родительским, который является тестовым проектом qt, т.е.
QT += testlib CONFIG += qtestlib
Найдите способ поделиться источниками между обоими. Вы можете добавить исходные файлы, используя их относительный путь, создать статическую библиотеку или использовать
pri
файл (файл заголовка проекта) для проектов не qt и qttestlib.
В этой конфигурации, создавая проект верхнего уровня, вы создадите свой обычный проект и также запустите тест.
с subdir
шаблоны проектов, которые вы получаете с помощью Ctrl+N, не очень полезны. Но файл проекта верхнего уровня можно сделать так же просто, как
include (commonsrc.pri)
TEMPLATE = subdirs
CONFIG += ordered
SUBDIRS += appdir
SUBDIRS += testingdir
Так выглядит верхний уровень одного из моих проектов.
Чтобы избежать головной боли, сопоставьте иерархию папок с иерархией подкаталогов. Например
solutiondir
commondir
appdir
testingdir
commonsrc.pri <--- allow you to write commondir\mycpp.cpp in any project
Вы можете попробовать тестовый фреймворк Boost
http://www.boost.org/doc/libs/1_55_0/libs/test/doc/html/index.html