2010-03-30 89 views
1

我想單元測試一個繼承QObject的類;該類本身在我的目錄結構中位於一個級別。當我建立了單元測試,我得到了標準的懸而未決的錯誤,如果一個類的MOC文件無法找到:創建在Qt單元測試中連接不良 - 缺少到moc文件的鏈接?

 
test.obj : error LNK2001: unresolved external symbol "public: virtual void * __thiscall UnitToTest::qt_metacast(char const *)" ([email protected]@@[email protected]) 

+ 2 missing functions 

的MOC文件,但似乎不被鏈接。我一直在圍繞着SO,網絡和Qt的文檔探索一段時間,並且遇到了困難。

如何獲得單元測試以將MOC文件包含在鏈接中?

====

我的項目文件是死的簡單:

 
TEMPLATE = app 
TARGET = test 
DESTDIR = . 
CONFIG += qtestlib 
INCLUDEPATH += . .. 
DEPENDPATH += . 
HEADERS += test.h 
SOURCES += test.cpp ../UnitToTest.cpp stubs.cpp 
DEFINES += UNIT_TEST 

我的目錄結構和文件:

 
C:. 
| UnitToTest.cpp 
| UnitToTest.h 
| 
\---test 
    | test.cpp  (Makefiles removed for clarity) 
    | test.h 
    | test.pro 
    | stubs.cpp 
    | 
    +---debug 
    |  UnitToTest.obj 
    |  test.obj 
    |  test.pdb 
    |  moc_test.cpp 
    |  moc_test.obj 
    |  stubs.obj 

編輯:信息

一般ated Makefile.Debug顯示了MOC文件丟失:

 
SOURCES  = test.cpp \ 
     ..\test.cpp \ 
     stubs.cpp debug\moc_test.cpp 
OBJECTS  = debug\test.obj \ 
     debug\UnitToTest.obj \ 
     debug\stubs.obj \ 
     debug\moc_test.obj 

回答

2

您需要../UnitToTest.h在親文件添加到頭。

+0

哇。令人煩惱的簡單;就像我認爲的那樣。 – dwj 2010-03-30 20:50:37

+0

這可能爲我節省了很多挫折。謝謝! – 2014-12-02 12:32:47