C++ Qt测试的适当项目结构

C++ Qt测试的适当项目结构,c++,qt,C++,Qt,我目前正在为我的Qt项目设置qtest,我正在努力找到一个很好的结构来满足我的需求。 该项目如下所示: . ├── keygen │   ├── main.cpp │   ├── tests │   │   ├── passkeygen_tests.cpp │   │   └── tests.pri ├── common.pri ├── MainApp │   ├── mainapp.pro │   ├── main.cpp ├── TestProject.pro ├── lib_utils │

我目前正在为我的Qt项目设置qtest,我正在努力找到一个很好的结构来满足我的需求。 该项目如下所示:

.
├── 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是一个子项目pro文件,包含有关keygen(独立可执行文件)、MainApp和libutils(由MainApp使用)的信息。正如您所看到的,我已经根据我在本例中看到的内容为keygen添加了测试,因为我希望看到子项目的测试覆盖率。因此,文件如下所示: 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"
#包括
#包括“passkeygenerator.h”
类PasskyGenTester:公共QObject
{
Q_对象
私人:
密钥发生器;
专用插槽:
void checkGeneration();
void checkGeneration_data();
};
//实现
静态PasskeygenTester passkeygenInstance;
#包括“passkeygen_tests.moc”
这在某种意义上是有效的,当我编译项目时,我看到生成了*.gcno文件,但这样我就无法独立执行测试来获得实际的覆盖率。所以我的问题是,生成gcov信息并进行独立可执行测试的最佳方法是什么?前面的链接只关心执行测试,而不关心实际项目的可运行性

我创建了一个示例项目,突出了我所面临的困难,尤其是在库测试方面: