2013-11-28 138 views
1

我想用QTTest建立一個簡單的單元測試。 MyTest.cpp文件如下所示:QtTest:moc文件將不會生成

#include <QtTest/QtTest> 

class MyTest : public QObject { 
    Q_OBJECT 

private slots: 
    void test() { 
     QVERIFY(true); 
    } 
}; 

QTEST_MAIN(MyTest) 
#include "mytest.moc" 

現在我創建了一個簡單的pro-file來生成可執行文件。但是在構建它時,編譯器無法找到創建的文件mytest.moc,因爲它沒有創建。當我手動使用moc編譯器時,一切正常。

親文件看起來像:

QT +=testlib 
TEMPLATE = app 
TARGET = unittests 
INCLUDEPATH += . 

# Input 
SOURCES += MyTest.cpp 

有沒有人有一個想法,我錯過了什麼?我正在使用VS2010,QT5.1和Windows7。

由於提前, 金

+0

http://qt-project.org/doc/qt-4.8/qtestlib-tutorial1.html **我們還需要包含生成的moc文件以使Qt的內省工作。**您是否添加了moc文件? – Balu

+0

@Prakash他做到了。順便說一句,我不知道qttest是如此糟糕。忘了它,並使用正常的單元測試框架(如gtest)。 –

+0

是的,正如您在代碼中看到的那樣,我們嘗試將生成的文件包含在該文件中。不幸的是,這種情況並非如此。 – KimKulling

回答

0

我在Linux上也有類似的問題。包含的moc文件未被重新生成,因此與測試用例不匹配。原因在於我將陰影構建和源內構建混合在一起,並且陰影構建中包含的moc實際上是源內構建中的停滯構建。

這種情況下的解決方案是從源內部構建中刪除moc文件,然後在陰影構建中強制重建(清理然後構建)測試類。它會觸發moc文件的重新生成,並在此之後正常運行所有測試。