【发布时间】:2011-07-06 14:54:33
【问题描述】:
我的单元测试项目中的依赖项有问题。
我的项目结构如下:
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-Subproject 转换为库(TARGET = lib in src.pro)。然后我将以下行添加到 tests.pro 中,一切正常:
LIBS += ../libSrc.so
第二个是命名test.pro中ClassA使用的所有文件。这意味着我的 tests.pro 看起来像:
TARGET = testclassA
TEMPLATE = app
/*...*/
HEADERS += ../src/ClassA.h \
../src/ClassB.h
SOURCES += testClassA.cpp \
../src/ClassA.cpp \
../src/ClassB.cpp
我不能使用第一个解决方案(将 src-project 转换为 lib),所以我必须使用第二个解决方案。即使我只想测试其中一个,是否真的有必要命名所有源/标题? 谢谢你的建议!
【问题讨论】:
-
我没有得到 我不能使用第一个解决方案 ...但是对于您的问题,如果
ClassA实际上 实例化ClassB所以是的,你必须在你的测试可执行文件中编译'ClassB.cpp',否则你会得到一个undefined reference...
标签: qt dependencies qtestlib