Frage

Ich habe einige Signale definiert, die bei verschiedenen Gelegenheiten ausgesendet werden:

signals:
    void buttonXClicked(int x);
    void numButtonsChanged(int num);

Jetzt möchte ich nur noch sehen, wie diese Signale aussehen und ob die Parameter korrekt sind.Es scheint, dass es mehrere Ansätze gibt, um die Signale zu überwachen.

In der Post hier bezieht sich rohanpm auf den Parameter -vs was hier näher angegeben ist:http://qt-project.org/doc/qt-4.8/qtestlib-manual.html#qtestlib-command-line-arguments

Dies scheint eine elegante und schnelle Möglichkeit zu sein, die von mir benötigten Informationen zu erhalten.Aber um ehrlich zu sein, kann ich nicht verstehen, wie und wohin ich rennen muss -vs.Es ist nicht Teil von qmake.Wo soll ich es sonst hinstellen?(Ich bin ziemlich neu in qt).

Bezogen auf die QSignalSpy es scheint notwendig zu sein, die bestehenden Klassen zu ändern?Gibt es nicht auch einen "externen" Ansatz?

Es gibt viele Dokumentationen zum Testen eines Slots - aber in Bezug auf Signale?Könnte ich einen benutzen printf oder cout irgendwo?

War es hilfreich?

Lösung

Ich bin auf diese Idee gekommen, als ich mehr über das Moc und seine Funktionalität gelesen habe.(Zumindest bei der Verwendung von NetBeans) bekomme ich zusätzlich zu meinem Datei-ButtonTest.cpp die Datei moc_ButtonTest.kpp.Im Inneren befindet sich eine Methode namens:

// SIGNAL 0
void ButtonTest::buttonXClicked(int _t1)
{
    void *_a[] = { 0, const_cast<void*>(reinterpret_cast<const void*>(&_t1)) };
    QMetaObject::activate(this, &staticMetaObject, 0, _a);    
}

Ich konnte kaum glauben, dass es so einfach war, aber ich habe gerade eine hinzugefügt

std::cout <<"buttonXClicked: "<<_t1;

und es scheint genau das zu tun, was ich will.

Andere Tipps

Wie die verlinkte Dokumentation schreibt:

Führt die ToUpper-Testfunktion mit allen verfügbaren Testdaten und die toInt-Testfunktion mit den Testdaten null aus (wenn die angegebenen Testdaten nicht vorhanden sind, schlägt der zugehörige Test fehl).

/myTestDirectory$ testMyWidget -vs -eventdelay 500

wobei testMyWidget die erstellte Testbinärdatei ist.Hier geht der -vs Dokumentation:

-vs gibt jedes Signal aus, das ausgesendet wird

Es gibt auch eine weitere Dokumentation, wenn Sie die Hilfeausgabe aufrufen:

/myTestDirectory$ testMyWidget --help | grep "\-vs"
-vs outputs every signal that gets emitted

Wenn Sie Probleme mit dem Schreiben haben QTestLib basierend auf Komponententests ist dies ein guter Ausgangspunkt für Sie mit Qt 4:

QTestLib Handbuch

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top