Модульное тестирование (не 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 не имеет значения. Вот как бы я пошел:

  1. Возьми свой обычный, не QT проект
  2. Добавьте родительский проект типа subdir, чтобы он действовал так же, как решение для Visual Studio.
  3. Добавьте другой проект под родительским, который является тестовым проектом qt, т.е.

    QT  += testlib
    CONFIG += qtestlib
    
  4. Найдите способ поделиться источниками между обоими. Вы можете добавить исходные файлы, используя их относительный путь, создать статическую библиотеку или использовать 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

Другие вопросы по тегам