c++ - 用于测试的 Qt 正确项目结构
问题描述
我目前正在为我的 Qt 项目设置 QTests,我正在努力想出一个很好的结构来满足我的需求。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 是一个子项目 pro 文件,其中包含有关 keygen(独立可执行文件)、MainApp 和 libutils(由 MainApp 使用)的信息。如您所见,我已经根据我在此示例https://github.com/kelvins/CodeCoverageExampleQt/tree/master/CodeCoverageExample中看到的内容添加了对 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
测试.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
解决方案
推荐阅读
- ruby-on-rails - 推送到 Elastic Beanstalk 时出现 Rails 捆绑错误
- reactjs - 为什么 CSS 不能正确应用于 React Material Web 组件中的按钮?
- sql-server-2008-r2 - 如果临时表退出,我该如何删除它?
- javascript - 角度距离计算
- numbers - 制表符数字编辑器最大值和最小值不起作用
- ios - UITableView 上的单元格在滚动或触摸表格后消失
- javascript - 在 each() 中访问 div 中的输入值
- css - 将子级移到父级的左侧(外侧)
- android - Fast Scroll Always Visible 属性禁用背景
- php - PHP嵌入到HTML中以供图片选择的问题