QTestLib:测试目标=应用程序时出现问题
我的单元测试项目中的依赖项有问题 我的项目结构如下:QTestLib:测试目标=应用程序时出现问题,qt,dependencies,qtestlib,Qt,Dependencies,Qtestlib,我的单元测试项目中的依赖项有问题 我的项目结构如下: MyProject |---MyProject.pro |---src | |---src.pro | |---ClassA.h | |---ClassA.cpp | |---ClassB.h | |---ClassB.cpp | |---tests |--tests.pro |--testClassA.cpp MyPro
MyProject
|---MyProject.pro
|---src
| |---src.pro
| |---ClassA.h
| |---ClassA.cpp
| |---ClassB.h
| |---ClassB.cpp
|
|---tests
|--tests.pro
|--testClassA.cpp
MyProject.pro:
TEMPLATE = subdirs
SUBDIRS = src tests
src.pro:
TEMPLATE = app
TARGET = someApp
HEADERS += classA.h classB.h
SOURCES += classA.cpp classB.cpp
假设ClassA调用ClassA.cpp中的ClassB:
void ClassA::someFunctionInClassA()
{
ClassB b;
}
现在我想对ClassA进行单元测试。我找到了两种方法。
第一个是将src子项目转换为库(src.pro中的TARGET=lib)。然后,我将以下行添加到tests.pro及其所有文件:
LIBS += ../libSrc.so
第二个是在test.pro中命名ClassA使用的所有文件。这意味着my tests.pro看起来像:
TARGET = testclassA
TEMPLATE = app
/*...*/
HEADERS += ../src/ClassA.h \
../src/ClassB.h
SOURCES += testClassA.cpp \
../src/ClassA.cpp \
../src/ClassB.cpp
我不能使用第一种解决方案(将src项目转换为lib),所以我必须使用第二种解决方案。即使我只想测试其中一个源/头,是否真的有必要命名所有源/头?
谢谢你的建议 我不能使用第一种解决方案,这意味着我不能对源代码做太多更改。现在什么是TARGET=app,必须保持为app。我唯一的任务是将单元测试添加到项目中。 我找到了一个解决方法,不显式命名所有类: 在tests.pro中:
SOURCES += $$files(../pathToCppDir/*.cpp)
HEADERS += $$files(../pathToHppDir/*.h)
SOURCES -= ../pathToCppDir/main.cpp // excluding second main(){}
我不明白我不能使用第一种解决方案。。。但是对于您的问题,如果ClassA
实际实例化ClassB
,那么您必须在测试可执行文件中编译'ClassB.cpp',否则您将得到一个未定义的引用
。。。