2011-01-10 2 views
6

Nhìn vào Qt's site, và tại another Stackoverflow answer bởi vì tôi không muốn tạo ra một dự án riêng biệt cho mỗi lớp Tôi muốn thử nghiệm, tôi đã đi lên với đoạn mã sau:Chạy Qt Đơn vị kiểm tra

testqstring.h

#ifndef TESTQSTRING_H 
#define TESTQSTRING_H 

#include <QtTest/QTest> 

class TestQString : public QObject 
{ 
    Q_OBJECT 

private slots: 
    void toUpper(); 
}; 

#endif // TESTQSTRING_H 

testqstring.cpp

#include "testqstring.h" 
#include <QString> 

void TestQString::toUpper() 
{ 
    QString str = "Hello"; 
    QCOMPARE(str.toUpper(), QString("HELLO")); 
} 

main.cpp

#include "testqstring.h" 

int main(int argc, char *argv[]) 
{ 
    TestQString testqstring; 
    QTest::qExec(&testqstring, argc, argv); 
    return 0; 
} 

Tuy nhiên, tôi nhận được lỗi mối liên kết sau đây:

... 
g++ -headerpad_max_install_names -arch i386 -o tester main.o testqstring.o moc_testqstring.o -F/Library/Frameworks -L/Library/Frameworks -framework QtCore 
Undefined symbols: 
"QTest::qExec(QObject*, int, char**)", referenced from: 
_main in main.o 
"QTest::compare_helper(bool, char const*, char*, char*, char const*, char const*, char const*, int)", referenced from: 
bool QTest::qCompare<QString>(QString const&, QString const&, char const*, char const*, char const*, int)in testqstring.o 
... and more like that ... 

Tôi đang làm gì sai ở đây?

+1

Bạn không cần liên kết với QTest? –

+0

@Noah bạn có ý gì? – wrongusername

Trả lời

10

Add:

CONFIG += qtestlib 

vào file .pro để có được qmake liên kết trong thư viện qtest.

+5

Hoặc ngày nay: "QT + = testlib" – StellarVortex