首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用QtTest对Qt应用程序进行单元测试

如何使用QtTest对Qt应用程序进行单元测试
EN

Stack Overflow用户
提问于 2018-02-05 19:01:49
回答 1查看 868关注 0票数 0

在搜索这个特定的问题时,我发现了一些其他的问题,但是我无法让我的设置与我的单元测试项目一起工作。

项目信息:(可选阅读) 我正在开始我的最后一个本科项目,在那里,我将创建一个IDE的语言Promula和验证工具Spin。我正在做这件事的教授希望在他的课堂上使用它,并让未来的本科生继续进步。它也意味着它是一个开放源码项目,每个人都可以做出贡献。

旋转工具

我的文件夹结构:

代码语言:javascript
复制
QSpin
-QSpin.pro
-QSpinApplication
--QSpinapplication.pro
--QSpinApplication.pri
--include
---Workspace
----*.h
--src
---Workspace
----*.cpp
-QSpinApplicationTests
--QSpinApplicationTests.pro
--WorkspaceGroupTests
---WorkspaceGroupTests.pro
----some cpp testfile

我的QSpinApplication编译并运行,没有任何问题。我所拥有的东西的进口可以进口。

代码语言:javascript
复制
#include <Workspace/(file_name).h> 

然而,在我的测试项目WorkspaceGroupTests中,我想以同样的方式包含头,但是我无法让它工作。此外,我假设测试项目需要知道cpp文件在哪里。如果我不使用任何应用程序头,则测试项目将使用默认测试用例编译和运行。目前,我使用的是默认阴影生成,它的根文件夹位于QSpin文件夹中。

知道我如何使我的测试项目正确工作,以实际能够测试我的应用程序类吗?

QSpin.pro:

代码语言:javascript
复制
TEMPLATE = subdirs
CONFIG += ordered
SUBDIRS += \
    QSpinApplication\QSpinApplication.pro \
    QSpinApplicationTests

QSpinApplication.pro:

代码语言:javascript
复制
QT += quick qml gui
CONFIG += c++11

DEFINES += QT_DEPRECATED_WARNINGS
SOURCES +=src/main.cpp
include(QSpinApplication.pri)
RESOURCES += qml.qrc

qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

QSpinApplication.pri:

代码语言:javascript
复制
#//DEPENDPATH += $$PWD
INCLUDEPATH += ./include
SOURCES +=src/workspace/workspaceview.cpp \
    src/workspace/groupitem.cpp \
    src/workspace/groupitemsplitter.cpp \
    src/workspace/workspacegroup.cpp \
    src/workspace/workspaceviewattached.cpp \
    src/workspace/workspaceviewiteminfo.cpp \
    src/workspace/workspacegrouplinknode.cpp

HEADERS += \
    include/workspace/workspaceview.h \
    include/workspace/groupitem.h \
    include/workspace/groupitemsplitter.h \
    include/workspace/workspacegroup.h \
    include/workspace/workspaceviewattached.h \
    include/workspace/workspace.h \
    include/workspace/workspaceviewiteminfo.h \
    include/workspace/workspacegrouplinknode.h

QSpinApplicationTests.pro:

代码语言:javascript
复制
TEMPLATE = subdirs
SUBDIRS += \
    WorkspaceGroupTests

WorkspaceGroupTests.pro:

代码语言:javascript
复制
QT += testlib
QT -= gui
DEPENDPATH+=./../../QSpinApplication
include(./../../QSpinApplication/QSpinApplication.pri)
CONFIG += qt console warn_on depend_includepath testcase
CONFIG -= app_bundle
TEMPLATE = app
SOURCES +=  tst_workspacegrouptests.cpp
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-05 19:46:52

不确定我是否理解得很好,但总的来说,我建议的是为"lib“创建一个单独的结构,在其中放置可以测试的逻辑代码,因此默认结构如下所示:

代码语言:javascript
复制
Structure:
 ├───app.pro
 ├───lib.pro
 └───tests.pro 

然后输入你的lib.pro:

代码语言:javascript
复制
TARGET = NameOfTarget
TEMPLATE = lib
CONFIG += staticlib

并添加您的tests.pro和app.pro:

代码语言:javascript
复制
LIBS += -L../lib -lNameOfTarget

最后,在app目录和测试中包含应该是没有问题的:

#include "anyHeaderFromLib.h"

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48629673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档