Правильная структура проекта Qt для тестирования - PullRequest
1 голос
/ 29 мая 2020

В настоящее время я нахожусь в процессе настройки QTests для моего проекта Qt, и я немного борюсь, чтобы придумать хорошую структуру, которая полностью удовлетворяет мои потребности. Atm проект выглядит так:

.
├── keygen
│   ├── main.cpp
│   ├── tests
│   │   ├── passkeygen_tests.cpp
│   │   └── tests.pri
├── common.pri
├── MainApp
│   ├── mainapp.pro
│   ├── main.cpp
├── TestProject.pro
├── lib_utils
│   ├── utils.cpp
│   ├── lib_utils.pro

TestProject - это профессиональный файл подпроекта, содержащий информацию о генерации ключей (автономный исполняемый файл), MainApp и libutils (используется MainApp). Как видите, я уже добавил тесты для кейгена в соответствии с тем, что я видел в этом примере https://github.com/kelvins/CodeCoverageExampleQt/tree/master/CodeCoverageExample, потому что я хочу увидеть тестовое покрытие моих подпроектов. Итак, файлы выглядят так: keygen.pro:

include($$PWD/../common.pri)

QT += core dbus testlib

TEMPLATE = app
DESTDIR = $${OUT_PWD}/bin
TARGET = keygen

include($$PWD/tests/tests.pri)
QMAKE_CXXFLAGS += --coverage
QMAKE_LFLAGS += --coverage

tests.pri:

SOURCES += $$PWD/passkeygen_tests.cpp

passkeygen_tests. cpp:

#include <QtTest>

#include "passkeygenerator.h"

class PasskeygenTester : public QObject
{
    Q_OBJECT

private:
    PasskeyGenerator passkeygen;

private slots:
    void checkGeneration();
    void checkGeneration_data();

};
//Implementations
static PasskeygenTester passkeygenInstance;

#include "passkeygen_tests.moc"

Это работает в том смысле, что когда я компилирую проект, я вижу, что создаются файлы * .gcno, но таким образом я не могу выполнять тесты в автономном режиме, чтобы получить фактическое покрытие. Итак, мой вопрос: как лучше всего генерировать информацию gcov и иметь автономные исполняемые тесты? Ссылка из ранее касалась только выполнения теста, а не работоспособности реального проекта.

Я создал образец проекта, в котором подчеркивается борьба, с которой я сталкиваюсь, особенно когда речь идет о тестах для библиотеки: https://github.com/faxe1008/TestCoverageStructureTest

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...