Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. German
  4. Funktion mit Rückgabe parameter in Unit test geht das?
Qt 6.11 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 2.9k 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 Offline
    G Offline
    Galilio
    wrote on last edited by
    #1

    Hallo Zusammen,

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

    danke

    aha_1980A 1 Reply Last reply
    0
    • 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 Extensions
                        • Unsolved