Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt
  • Unsolved
Collapse
qtws26_logo

The Qt Event of the Year: Qt World Summit 2026

Save Your Spot >
Brand Logo
  1. Home
  2. International
  3. German
  4. Funktion mit Rückgabe parameter in Unit test geht das?
Qt 6.12 LTS is out! See what's new in the release blog

Funktion mit Rückgabe parameter in Unit test geht das?

Scheduled Pinned Locked Moved Unsolved German
11 Posts 2 Posters 3.0k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • G Galilio

    Hallo Zusammen,

    Kann ich in einen Qt Unit test einen Funktion mit Rückgabeparameter schreiben?
    Geht das?

    danke

    aha_1980A Offline
    aha_1980A Offline
    aha_1980
    Lifetime Qt Champion
    wrote on last edited by
    #2

    @Galilio

    Ja, kannst du mit der Einschränkung das in solch einer Funktion die Makros QVERIFY und QCOMPARE nicht funktionieren.

    Dies lässt sich über eigene Testfunktionen mit if und entsprechender Fehlerausgabe aber umgehen.

    Grüße

    Qt has to stay free or it will die.

    G 1 Reply Last reply
    0
    • aha_1980A aha_1980

      @Galilio

      Ja, kannst du mit der Einschränkung das in solch einer Funktion die Makros QVERIFY und QCOMPARE nicht funktionieren.

      Dies lässt sich über eigene Testfunktionen mit if und entsprechender Fehlerausgabe aber umgehen.

      Grüße

      G Offline
      G Offline
      Galilio
      wrote on last edited by
      #3

      @aha_1980
      mir geht um diese Codeabschnitt

          QQmlEngine engine;
          engine.addImportPath("qrc:/");
      
          QScopedPointer<CQtClasseA> mcClass(new CQtClasseA);
          engine.rootContext()->setContextProperty( "myClass", mcClass.data() );
      
          QScopedPointer<CQtWindowManager> windowManager(new CQtWindowManager);
          engine.rootContext()->setContextProperty( "windowManager", windowManager.data() );
      
          qmlRegisterType<CQtWindowManager>("WindowManager", 1, 0, "TUserAction");
      
          QQuickView view(&engine, 0);
          view.setSource(QUrl("qrc:/qml_test/tst_QQttestClass.qml"));
          windowManager->setQuickView(&view);
      
          QQuickItem* testItem = view.findChild<QQuickItem*>( "test_QQttestClass" );
          Q_ASSERT(testItem);
      	
      	
      

      , die ich gerne in eine Fkt kapseln möchte,
      weil es sich wiederholt bei jede Funktion

      aha_1980A 1 Reply Last reply
      0
      • G Galilio

        @aha_1980
        mir geht um diese Codeabschnitt

            QQmlEngine engine;
            engine.addImportPath("qrc:/");
        
            QScopedPointer<CQtClasseA> mcClass(new CQtClasseA);
            engine.rootContext()->setContextProperty( "myClass", mcClass.data() );
        
            QScopedPointer<CQtWindowManager> windowManager(new CQtWindowManager);
            engine.rootContext()->setContextProperty( "windowManager", windowManager.data() );
        
            qmlRegisterType<CQtWindowManager>("WindowManager", 1, 0, "TUserAction");
        
            QQuickView view(&engine, 0);
            view.setSource(QUrl("qrc:/qml_test/tst_QQttestClass.qml"));
            windowManager->setQuickView(&view);
        
            QQuickItem* testItem = view.findChild<QQuickItem*>( "test_QQttestClass" );
            Q_ASSERT(testItem);
        	
        	
        

        , die ich gerne in eine Fkt kapseln möchte,
        weil es sich wiederholt bei jede Funktion

        aha_1980A Offline
        aha_1980A Offline
        aha_1980
        Lifetime Qt Champion
        wrote on last edited by
        #4

        @Galilio said in Funktion mit Rückgabe parameter in Unit test geht das?:

        , die ich gerne in eine Fkt kapseln möchte,
        weil es sich wiederholt bei jede Funktion

        Und was ist jetzt Dein Problem?

        Qt has to stay free or it will die.

        1 Reply Last reply
        0
        • G Offline
          G Offline
          Galilio
          wrote on last edited by
          #5

          Wenn ich diese so kapsele:

           QQuickItem& TestClass::itemValue()
          { 
          	QQmlEngine engine;
              engine.addImportPath("qrc:/");
          
              QScopedPointer<CQtClasseA> mcClass(new CQtClasseA);
              engine.rootContext()->setContextProperty( "myClass", mcClass.data() );
          
              QScopedPointer<CQtWindowManager> windowManager(new CQtWindowManager);
              engine.rootContext()->setContextProperty( "windowManager", windowManager.data() );
          
              qmlRegisterType<CQtWindowManager>("WindowManager", 1, 0, "TUserAction");
          
              QQuickView view(&engine, 0);
              view.setSource(QUrl("qrc:/qml_test/tst_QQttestClass.qml"));
              windowManager->setQuickView(&view);
          
              QQuickItem* testItem = view.findChild<QQuickItem*>( "test_QQttestClass" );
              Q_ASSERT(testItem);
          	return *testItem;
          }
          

          dann crashed das Unit Test bei der Ausführung.

          aha_1980A 1 Reply Last reply
          0
          • G Galilio

            Wenn ich diese so kapsele:

             QQuickItem& TestClass::itemValue()
            { 
            	QQmlEngine engine;
                engine.addImportPath("qrc:/");
            
                QScopedPointer<CQtClasseA> mcClass(new CQtClasseA);
                engine.rootContext()->setContextProperty( "myClass", mcClass.data() );
            
                QScopedPointer<CQtWindowManager> windowManager(new CQtWindowManager);
                engine.rootContext()->setContextProperty( "windowManager", windowManager.data() );
            
                qmlRegisterType<CQtWindowManager>("WindowManager", 1, 0, "TUserAction");
            
                QQuickView view(&engine, 0);
                view.setSource(QUrl("qrc:/qml_test/tst_QQttestClass.qml"));
                windowManager->setQuickView(&view);
            
                QQuickItem* testItem = view.findChild<QQuickItem*>( "test_QQttestClass" );
                Q_ASSERT(testItem);
            	return *testItem;
            }
            

            dann crashed das Unit Test bei der Ausführung.

            aha_1980A Offline
            aha_1980A Offline
            aha_1980
            Lifetime Qt Champion
            wrote on last edited by
            #6

            @Galilio Und welche Untersuchungen hast Du vorgenommen um den Crash einzugrenzen?

            Tip: view ist eine lokale Variable und du gibst einen Zeiger darauf zurück. Boom

            Qt has to stay free or it will die.

            G 2 Replies Last reply
            0
            • aha_1980A aha_1980

              @Galilio Und welche Untersuchungen hast Du vorgenommen um den Crash einzugrenzen?

              Tip: view ist eine lokale Variable und du gibst einen Zeiger darauf zurück. Boom

              G Offline
              G Offline
              Galilio
              wrote on last edited by
              #7

              @aha_1980 said in Funktion mit Rückgabe parameter in Unit test geht das?:

              Und welche Untersuchungen hast Du vorgenommen um den Crash einzugrenzen?

              das QQuickView view vielleicht als globale variable in der class zu deklarieren

              aha_1980A 1 Reply Last reply
              0
              • aha_1980A aha_1980

                @Galilio Und welche Untersuchungen hast Du vorgenommen um den Crash einzugrenzen?

                Tip: view ist eine lokale Variable und du gibst einen Zeiger darauf zurück. Boom

                G Offline
                G Offline
                Galilio
                wrote on last edited by
                #8

                @aha_1980

                Hast du bitte eine Idee wie ich das Crasch verhindern kann?

                Danke

                1 Reply Last reply
                0
                • G Galilio

                  @aha_1980 said in Funktion mit Rückgabe parameter in Unit test geht das?:

                  Und welche Untersuchungen hast Du vorgenommen um den Crash einzugrenzen?

                  das QQuickView view vielleicht als globale variable in der class zu deklarieren

                  aha_1980A Offline
                  aha_1980A Offline
                  aha_1980
                  Lifetime Qt Champion
                  wrote on last edited by
                  #9

                  @Galilio said in Funktion mit Rückgabe parameter in Unit test geht das?:

                  das QQuickView view vielleicht als globale variable in der class zu deklarieren

                  Zum Beispiel. Dabei musst Du natürlich beachten, dass dieses View von anderen Objekten abhängt die dann evtl. auch global definiert werden müssen.

                  Qt has to stay free or it will die.

                  G 1 Reply Last reply
                  0
                  • aha_1980A aha_1980

                    @Galilio said in Funktion mit Rückgabe parameter in Unit test geht das?:

                    das QQuickView view vielleicht als globale variable in der class zu deklarieren

                    Zum Beispiel. Dabei musst Du natürlich beachten, dass dieses View von anderen Objekten abhängt die dann evtl. auch global definiert werden müssen.

                    G Offline
                    G Offline
                    Galilio
                    wrote on last edited by
                    #10

                    @aha_1980
                    folgende globale Variablen habe ich deklariert:

                            private:
                            QQmlEngine engine;
                            QQuickView view;
                    

                    und wenn ich die in der Funktion "itemValue" verwende dann geht es auch nicht.
                    was mache ich denn falsch?
                    Danke

                    aha_1980A 1 Reply Last reply
                    0
                    • G Galilio

                      @aha_1980
                      folgende globale Variablen habe ich deklariert:

                              private:
                              QQmlEngine engine;
                              QQuickView view;
                      

                      und wenn ich die in der Funktion "itemValue" verwende dann geht es auch nicht.
                      was mache ich denn falsch?
                      Danke

                      aha_1980A Offline
                      aha_1980A Offline
                      aha_1980
                      Lifetime Qt Champion
                      wrote on last edited by
                      #11

                      @Galilio said in Funktion mit Rückgabe parameter in Unit test geht das?:

                      und wenn ich die in der Funktion "itemValue" verwende dann geht es auch nicht.

                      "Geht nicht" ist keine Fehlerbeschreibung.

                      was mache ich denn falsch?

                      Das kann ich dir so ohne weiteres auch nicht sagen. Der Debugger aber wahrscheinlich schon.

                      Du musst schon selbst weiter eingrenzen woher das Problem kommt.

                      Mitunter ist es einfacher, mit einem leeren Projekt anzufangen und schrittweise Code hinzuzufügen, bis das Problem auftritt. Dann kannst Du bessere Fragen stellen bzw. kommst selbst auf die Antwort.

                      Grüße

                      Qt has to stay free or it will die.

                      1 Reply Last reply
                      0

                      • Login

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt
                      • Unsolved