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! 🙄


Log in to reply