Question

J'ai défini quelques signaux qui sont émis à différentes occasions :

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

Maintenant, je voudrais juste voir à quoi ressemblent ces signaux et si les paramètres sont corrects.Il semble qu'il existe plusieurs approches pour surveiller les signaux.

Dans le poste ici, rohanpm fait référence au paramètre -vs qui est précisé plus près ici :http://qt-project.org/doc/qt-4.8/qtestlib-manual.html#qtestlib-command-line-arguments

Cela semble être un moyen élégant et rapide d'obtenir les informations dont j'ai besoin.Mais pour être honnête, je n'arrive pas à comprendre comment et où je dois courir -vs.Cela ne fait pas partie de qmake.Où dois-je le mettre d'autre ?(Je suis assez nouveau sur Qt).

En lien avec QSignalSpy il semble nécessaire de changer les classes existantes ?N'y a-t-il pas également une approche « externe » ?

Il existe de nombreuses documentations sur la façon de tester un emplacement - mais concernant les signaux ?Puis-je utiliser un printf ou cout quelque part?

Était-ce utile?

La solution

J'ai eu cette idée en lisant davantage sur le moc et ses fonctionnalités.(Au moins en utilisant NetBeans) Je reçois en plus de mon fichier ButtonTest.cpp le fichier moc_ButtonTest.cpp.À l'intérieur se trouve une méthode appelée :

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

J'avais du mal à croire que c'était si simple mais je viens d'ajouter un

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

et il semble faire exactement ce que je veux.

Autres conseils

Comme l'écrit la documentation liée :

Exécute la fonction de test toUpper avec toutes les données de test disponibles et la fonction de test toInt avec les données de test appelées zéro (si les données de test spécifiées n'existent pas, le test associé échouera).

/myTestDirectory$ testMyWidget -vs -eventdelay 500

où testMyWidget est le binaire de test construit.Voilà le -vs Documentation:

-vs produit chaque signal qui est émis

Il existe également une documentation supplémentaire si vous récupérez le résultat de l'aide :

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

Si vous avez des difficultés à écrire QTestLib basés sur des tests unitaires, c'est un bon point de départ pour vous avec Qt 4 :

Manuel QTestLib

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top