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

时间:2018-02-05 19:01:50

标签: qt unit-testing qmake

我在搜索这个特定问题时发现了一些其他命中,但我无法使用我的设置来处理我的单元测试项目。

  

项目信息:(可选阅读)

     

我正处于最后一个本科项目的开始阶段   为Promula和the语言创建一个IDE   验证工具Spin。我正在这样做的教授期待   在他的班级和未来的本科生中使用它来不断改进。它也是一个每个人都可以贡献的开源项目。

Spin tool

我的文件夹结构:

QSpin
-QSpin.pro
-QSpinApplication
--QSpinapplication.pro
--QSpinApplication.pri
--include
---Workspace
----*.h
--src
---Workspace
----*.cpp
-QSpinApplicationTests
--QSpinApplicationTests.pro
--WorkspaceGroupTests
---WorkspaceGroupTests.pro
----some cpp testfile

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

#include <Workspace/(file_name).h> 

但是在我的测试项目WorkspaceGroupTests中,我希望以相同的方式包含标题,但我无法使其工作。除此之外,我假设测试项目需要知道cpp文件的位置。如果我不使用任何应用程序头,测试项目将编译并运行默认测试用例。 目前我正在使用QSpin文件夹中的根文件夹进行默认阴影构建。

  

如何让我的测试项目正常工作,实际能够测试我的应用程序类?

QSpin.pro:

TEMPLATE = subdirs
CONFIG += ordered
SUBDIRS += \
    QSpinApplication\QSpinApplication.pro \
    QSpinApplicationTests

QSpinApplication.pro:

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:

#//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:

TEMPLATE = subdirs
SUBDIRS += \
    WorkspaceGroupTests

WorkspaceGroupTests.pro:

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

1 个答案:

答案 0 :(得分:1)

不确定我是否理解得很好,但总的来说,我建议的是为&#34; lib&#34;创建一个单独的结构。在哪里放置可以测试的逻辑代码,所以默认结构看起来像这样:

Integer

然后你输入你的lib.pro:

Structure:
 ├───app.pro
 ├───lib.pro
 └───tests.pro 

并添加test.pro和app.pro:

TARGET = NameOfTarget
TEMPLATE = lib
CONFIG += staticlib

最后,应该可以毫无问题地包含在app目录和测试中:

LIBS += -L../lib -lNameOfTarget