Funktion mit Rückgabe parameter in Unit test geht das?
-
Ja, kannst du mit der Einschränkung das in solch einer Funktion die Makros
QVERIFY
undQCOMPARE
nicht funktionieren.Dies lässt sich über eigene Testfunktionen mit
if
und entsprechender Fehlerausgabe aber umgehen.Grüße
-
@aha_1980
mir geht um diese CodeabschnittQQmlEngine 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 -
@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 FunktionUnd was ist jetzt Dein Problem?
-
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.
-
@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.
-
@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