QtTest für GUI funktioniert nicht (Compiler und Laufzeitfehler)
-
Ich sitze hier auf ner Windows XP Maschine mit Qt 4.5.1 und habe bereits mit QtTest und non-Gui Tests gearbeitet (diese funktionieren )
Nun folge ich dem Test hier: http://doc.trolltech.com/4.5/qtestlib-tutorial3.html
Und habe den SEHR simplen Testfall aus dem Tutorial:
{ QLineEdit lineEdit; QTest::keyClicks(&lineEdit, "hello world"); QCOMPARE(lineEdit.text(), QString("hello world")); }
Liefert mir einen Compiler-Fehler, den ich äußerst merkwürdig finde:
Fehler 1 error C2039: 'keyClicks': Ist kein Element von 'QTest' testerclass.h 150 Fehler 2 error C3861: "keyClicks": Bezeichner wurde nicht gefunden. testerclass.h 150
Wtf? keyClicks ist laut Doku in jeder Version der QtTest lib.
Wenn ich das auskommentiere, krieg ich zusätzlich noch ein Assert-Error einen Laufzeitfehler von Qt selbst:
QWidget: Cannot create a QWidget when no GUI is being used
Macht ja auch Sinn, in der Regel braucht QLineEdit einen Pointer auf eine Parent-GUI.
Nun frag ich mich, hab ich da was vergessen? Muss ich die QtTest lib mit zusätzlichen Parametern kompilieren? Hab in der Anleitung zu QtTests nichts explilzit dazu finden können
-
#include <QTest>
nicht vergessen?
QT += testlib
ins .pro-File geschrieben?
Und auf der Seite deren Link du gepostet hast steht doch ganz genau was du machen sollst:
The only difference is that you need to include the QtGui class definitions in addition to the QTest namespace.
Btw.
Falsche Forum.
-
Ich hab die folgende .h Datei
#include <QtGui> #include <QtTest/QtTest> class TestGui: public QObject { Q_OBJECT private slots: void testGui(); };
Daher gehe jetzt nicht davon aus, was vergessen zu haben.
Was heißt das mit der .pro Datei und += testlib? Ich hab doch geschrieben, dass ich non gui tests bereits durchführen kann. Daraus schließe ich, dass QtTest mit kompiliert worden ist
-
Immernoch das gleiche Problem. Ich hab es zuhause nochmal lokal mit Qt 4.5.2 und VS 2008 probiert.
Hier ist die qtTest-test.h Datei:
#include <QtGui> #include <QtTest/QtTest> #include <QObject> class TestGui: public QObject { Q_OBJECT private slots: void testGui() { QLineEdit lineEdit; QTest::keyClicks(&lineEdit, "hello world"); QCOMPARE(lineEdit.text(), QString("hello world")); } };
Diese wird gemoc't und die moc datei wird ins projekt hinzugefügt.
Dann die entry.cpp
#include "qtTest-test.h" QTEST_MAIN(TestGui)
Und er kennt immernoch kein keyClicks
-
Wie immer bei den Qt-Tutorials/Examples/demos:
Qt-Src von qtsoftware.com runterladen, da ist dann alles fertig kompilierbar dabei.
In deinem Fall:$ cd 4.5.1/examples/qtestlib/tutorial3 $ qmake $ make [...] $ ./tutorial3 ********* Start testing of TestGui ********* Config: Using QTest library 4.5.2, Qt 4.5.2 PASS : TestGui::initTestCase() PASS : TestGui::testGui() PASS : TestGui::cleanupTestCase() Totals: 3 passed, 0 failed, 0 skipped ********* Finished testing of TestGui *********
Klappt alles auf Anhieb.
Wenn nicht hast du ein Problem mit diener Qt4-Installation.
-
Falsches Forum, aber was solls?!
Lasst uns über Gott reden!
Nichts ist unmöglich im C++ Forum! YEEHA!