C++ Qt测试的适当项目结构
我目前正在为我的Qt项目设置qtest,我正在努力找到一个很好的结构来满足我的需求。 该项目如下所示: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 │
.
├── 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信息并进行独立可执行测试的最佳方法是什么?前面的链接只关心执行测试,而不关心实际项目的可运行性
我创建了一个示例项目,突出了我所面临的困难,尤其是在库测试方面: