2013-08-15 4 views
0

Это первый раз, когда я делаю тест, и я решил попробовать его в Qt, так как теперь я на проекте Qt. То, что я пытался сделать, это в основном «привет мир» модульного теста, поэтому я могу ознакомиться с Qt-тестами. Однако проблема в том, что составление тест завершается с:Простой qtest терпит неудачу с «множественным определением основного»

$ make 
g++ -c -m64 -pipe -O2 -Wall -W -D_REENTRANT -DQT_WEBKIT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++-64 -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I/usr/include/qt4/QtTest -I. -I. -o test_simple.o test_simple.cpp 
/usr/bin/moc-qt4 -DQT_WEBKIT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++-64 -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I/usr/include/qt4/QtTest -I. -I. test_simple.h -o moc_test_simple.cpp 
g++ -c -m64 -pipe -O2 -Wall -W -D_REENTRANT -DQT_WEBKIT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++-64 -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I/usr/include/qt4/QtTest -I. -I. -o moc_test_simple.o moc_test_simple.cpp 
g++ -m64 -Wl,-O1 -o qtests test_simple.o moc_test_simple.o -L/usr/lib/x86_64-linux-gnu -lQtTest -lQtGui -lQtCore -lpthread 
moc_test_simple.o: In function `main': 
moc_test_simple.cpp:(.text.startup+0x0): multiple definition of `main' 
test_simple.o:test_simple.cpp:(.text.startup+0x0): first defined here 
collect2: ld returned 1 exit status 
make: *** [qtests] Error 1 

код состоит из класса Простой и тестирование класса test_Simple.

simple.h:

#ifndef SIMPLE_H 
#define SIMPLE_H 

#include <QObject> 

class Simple : public QObject 
{ 
    int _a,_b; 

public: 
    void setA(int a) { _a = a; } 
    void setB(int b) { _b = b; } 
    int a() { return _a; } 
    int b() { return _b; } 
}; 

#endif //SIMPLE_H 

test_simple.h:

#ifndef TEST_SIMPLE_H 
#define TEST_SIMPLE_H 

#include <QTest> 
#include "simple.h" 

class test_Simple : public QObject 
{ 
    Q_OBJECT 

private slots: 
    void testNothing(); 
}; 

QTEST_MAIN(test_Simple) 

#endif //TEST_SIMPLE_H 

test_simple.cpp:

void test_Simple::testNothing() 
{ 

    Simple s; 
    s.setA(3); 

    QCOMPARE(s.a(), 3); 
    QCOMPARE(s.a(), 2); 
} 

EDIT: в дополнение к этому вопросу я хочу, чтобы подтвердить, что вы не может проверить класс, который не наследует от QObject правильно?

ответ

3

QTEST_MAIN (test_Simple)

Это определяет основную функцию для вас - так что просто положить его в TestCase "главный" .cpp, а не в заголовке!

+0

Это действительно моя ошибка. Спасибо за быстрый ответ – Ferrilata