0
我的單元測試項目中存在依賴關係問題。QTestLib:測試目標的問題= app
我的項目結構如下:
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的調用ClassB的在ClassA.cpp:
void ClassA::someFunctionInClassA()
{
ClassB b;
}
現在我想單元測試ClassA。我找到了兩種方法來做到這一點。 第一個是將src-Subproject轉換爲一個庫(在src.pro中的TARGET = lib)。然後我下面的行添加到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項目轉換成一個lib),所以我必須使用第二個。即使我只想測試其中的一個,是否真的有必要命名所有的源代碼/頭文件? 謝謝您的建議!
我沒有得到* I不能使用第一個解決方案* ...但對於你的問題,如果'ClassA' *實際*實例'ClassB'所以是的,你將不得不在你的測試可執行文件中編譯'ClassB.cpp',否則你將得到一個'未定義的引用'... – vrince