Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QtTest单元测试,如何添加位于另一个项目中的头文件?_C++_Qt_Unit Testing_Qt Creator_Qttest - Fatal编程技术网

C++ QtTest单元测试,如何添加位于另一个项目中的头文件?

C++ QtTest单元测试,如何添加位于另一个项目中的头文件?,c++,qt,unit-testing,qt-creator,qttest,C++,Qt,Unit Testing,Qt Creator,Qttest,也许我遗漏了一些东西,但在我看来,QtTest框架提供的唯一教程让您测试QString类,这真是太愚蠢了 单元测试的典型用例是……测试您自己编写的类,但在教程中没有提到如何在不同的项目中引用您的类进行测试,google也让我失望(我真的怀疑复制粘贴类是一种好方法) 我甚至翻阅了3本不同的Qt书籍,没有提到QtTest。您可以在.pro文件中添加指向其他项目目录的include路径,如下所示: INCLUDEPATH += <directory> 也许更好的解决方案是公开可重用代码,

也许我遗漏了一些东西,但在我看来,QtTest框架提供的唯一教程让您测试QString类,这真是太愚蠢了

单元测试的典型用例是……测试您自己编写的类,但在教程中没有提到如何在不同的项目中引用您的类进行测试,google也让我失望(我真的怀疑复制粘贴类是一种好方法)


我甚至翻阅了3本不同的Qt书籍,没有提到QtTest。

您可以在.pro文件中添加指向其他项目目录的include路径,如下所示:

INCLUDEPATH += <directory>
也许更好的解决方案是公开可重用代码,将其编译为库并链接到库。例如,Windows上的.DLL或.LIB,Linux上的.SO或.a

INCLUDEPATH += ../myotherproject/
win32:LIBS += ../myotherproject/linkme.lib

你能告诉我们你得到的具体错误吗?

我建议你把你的主应用程序项目和你的单元测试项目都需要的所有源和头放在一个.pri(.pro include)文件中。将此文件放在主项目中。然后将此文件包含在两个项目中

请注意,每当向主项目添加新类时,QtCreator都会自动将
SOURCES+=
HEADERS+=
行追加到.pro文件中,但您希望它们位于.pri文件中,因此需要在以后手动移动它们。我认为没有办法告诉我们把它们放在哪里


主要项目:

myproject.pro
myproject.pri
main.cpp
someclass.h
someclass.cpp
unittest.pro
main.cpp
test.h
test.cpp
myproject.pro:

QT += ...
TARGET = ...
...

SOURCES += main.cpp       # "private" to this project
include(myproject.pri)    # needed in unit test
myproject.pri:

SOURCES += someclass.cpp
HEADERS += someclass.h

单元测试项目:

myproject.pro
myproject.pri
main.cpp
someclass.h
someclass.cpp
unittest.pro
main.cpp
test.h
test.cpp
unittest.pro:

QT += ...
TARGET = ...
...

SOURCES += main.cpp test.cpp
HEADERS += test.h

# include the classes from the main project:
INCLUDEPATH += ../myproject/
include(../myproject/myproject.pri)

右键单击QtCreator中的project并执行“添加现有文件”没有帮助?尝试#include时找不到这些文件,并且已将其添加到中的标题中。pro@JohnLotacs头文件用于当前项目的头文件。要包含来自第三方等的源代码,请参见下面我的答案。不起作用,我对包含文件的所有函数调用都会导致“未定义引用******”错误,尽管Qt Creator能够自动完成这些函数(意味着它正在查找头文件)。我认为这种方法是更好的解决方案。