В настоящее время я нахожусь в процессе настройки 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