Feature - Fonctionnalité #3790
Feature - Fonctionnalité #3786: Tests Unitaires
Tests Unitaires Mainwindow
60%
Historique
#1 Mis à jour par Icham Sirat il y a plus de 10 ans
- % réalisé changé de 0 à 10
#2 Mis à jour par Icham Sirat il y a plus de 10 ans
- % réalisé changé de 10 à 20
- définition du INCLUDEPATH pointant vers l'arborescence src
- inclusion des .h servant à mainwindow.h
- et (super important), création d'une AbulEduApplicationV1 pour recupération des différents objets apportés par cette lib (networkmanager...)
Par contre, comme on créé une AbulEduApp, les résultats des tests sont pollués par les logs/debugs.
J'ai donc ajouter une prise en compte d'un argument (-nolog) pour couper les debugs/logs (enfin je ne pouvais pas utiliser QT_NO_DEBUG car utile pour les tests).
Le problème est que l'exécutable créé pour les tests n'accepte pas d'arguments non connus (cf QTestLib arguments -> http://qt-project.org/doc/qt-4.8/qtestlib-manual.html#qtestlib-command-line-arguments.
Donc, si c'est un executable normal, on fait :
./abuledu-alacarte -nolog
Et si c'est pour les tests unitaires, il faut rajouter cet argument dans le code :
int a = 1; char * arg = "-nolog"; app = new AbulEduApplicationV1(a, &arg, VER_INTERNALNAME_STR, VER_PRODUCTVERSION_STR, VER_COMPANYDOMAIN_STR, VER_COMPANYNAME_STR); mainWindow = new MainWindow(); mainWindow->show();
Et c'est nickel, plus de pollution, que des résultats de tests propres =)
#3 Mis à jour par Icham Sirat il y a plus de 10 ans
testCase_init_premierOngletPageLogiciels() : s'assure que la première page au lancement soit la pageLogiciels (a faire en premier car après test de navigation avec des changements de pages manuels dans le code
testCase_init_fixedSize() : qui permet de savoir si la taille est bien fixée à 1024x600 (dans tous les cas)
testCase_init_servicesWebIndisponible() : s'assure que le bouton webServices set invisible (non implémenté)
testCase_init_parametresWifi() : s'assure que les paramètres Wifi soit accessible (mode tablette) ou pas (autres modes)
testCase_init_abeGraphicMenu() : s'assure de la bonne instanciation du menu graphique et de sa lisibilité
testCase_ClickOngletApplications() : s'assure que le clic sur l'onglet "Applications" affiche le widget pageLogiciels
testCase_ClickOngletInstallation() : s'assure que le clic sur l'onglet "Installation" affiche le widget pageInstallSofts
testCase_ClickOngletAdministration() : s'assure que le clic sur l'onglet "Administration" affiche le widget pageAdministration
testCase_ClickOngletMonCompte() : s'assure que le clic sur l'onglet "MonCompte" affiche le widget pageMonCompte
testCase_ClickBtnAide() : s'assure que le clic sur le bouton "Aide" du menu graphique affiche le widget pageAide
testCase_ClickBtnParametres() : s'assure que le clic sur bouton "Parametre" du menu graphique affiche le widget pageConfiguration
testCase_ClickBtnDomaine() : s'assure que le clic sur le bouton "Domaine" (pageParametre) affiche le widget pageConfigurerDomaines
testCase_ClickBtnProxy() : s'assure que le clic sur le bouton "Proxy" (pageParametre) affiche le widget pageConfigurerProxy
testCase_ClickBtnMaj() : s'assure que le clic sur le bouton "MAJ" (pageParametre) affiche le widget pageConfigurerMAJ
testCase_ClickBtnInformations() : s'assure que le clic sur le bouton "Informations" (pageParametre) affiche le widget pageInformations
testCase_ClickBtnWifi() : s'assure que le clic sur le bouton "WiFi" (pageParametre) affiche le widget pageConfigurationWifi
testCase_ClickBtnConnexion() : s'assure que le clic sur le bouton en mode déconnecte affiche la pageLogin
testCase_ReceptionConfLogiciels_Stable() : s'assure de la bonne réception du fichier logiciels.conf (en stable)
testCase_ReceptionConfLogiciels_Beta() : s'assure de la bonne réception du fichier logiciels.conf (en beta)
#4 Mis à jour par Icham Sirat il y a plus de 10 ans
- Statut changé de New - Nouveau à Pending - En attente
#5 Mis à jour par Icham Sirat il y a plus de 10 ans
- Statut changé de Pending - En attente à Assigned - En cours
#6 Mis à jour par Icham Sirat il y a plus de 10 ans
- % réalisé changé de 20 à 30
#7 Mis à jour par Icham Sirat il y a plus de 10 ans
- % réalisé changé de 30 à 40
#8 Mis à jour par Icham Sirat il y a plus de 10 ans
Lors des tests sur l'affichage de la pageLogin, je vois passé ce warning :
QWARN : Tests_Mainwindow::testCase_ClickBtnConnexion() QAbstractSocket::connectToHost() called when already looking up or connecting/connected to "auth.abuledu.net"
Lorsqu'on affiche la pageLogin (méthode showEvent()), la classe AbulEduNetworkTests lance les tests de connectivité sur le serveur d'authentification.
Mais si on ré-affiche cette page, les tests sont relancés alors que le socket est déjà en train de tenter de ce connecter.
J'ai la solution, j'ouvre un ticket à l'endroit adéquat -> #3800
#9 Mis à jour par Icham Sirat il y a plus de 10 ans
- GROSSE MODIFICATION DES TESTS :
- suppression classe autotest.h
- reprise d'un main classique de test avec enchaînement des tests avec QTest::qExec()
- possibilité de s'authentifier durant les tests avec attente de la réponse serveur (j'en ai bavé ^^)
- espionnage des signaux avec attente (émission asynchrone)
#10 Mis à jour par Icham Sirat il y a plus de 10 ans
Les méthodes de tests unitaires attendant un traitement après un click (par exemple attente du retour de la réponse boutique) sont bloquantes =)
(enfin elles attendent la fin du traitement et passe la main).
C'est grâce au QSignalSpy :
QSignalSpy signalSpy(mainWindow->getBtnOngletAdministration(), SIGNAL(clicked())); mainWindow->getBtnOngletAdministration()->click(); Q_ASSERT(signalSpy.isValid()); QCOMPARE(signalSpy.count(), 1); // On s'assure que le signal est vraiment émis qu'1 fois ! while (signalSpy.count() != 1) { qDebug() << "Wait for reception signal mainWindow->getBtnOngletAdministration()::clicked()"; QTest::qWait(200); }
#11 Mis à jour par Icham Sirat il y a plus de 10 ans
- Mode connecté :
- on s'assure d'être bien sur la pageMonCompte
- l'objet AbulEduIdentité est égal au login SSO
#12 Mis à jour par Icham Sirat il y a plus de 10 ans
- % réalisé changé de 40 à 60
Les tests présents (17) passent tous en mode connecté/deconnecté =) (Youpi)
Pushed revno 675
#13 Mis à jour par Icham Sirat il y a plus de 10 ans
- test sur les 2 serveurs (stable et beta donc 2 méthodes de tests distincts)
- test sur l’émission du signal finish de la requête (retour == QNetworkReply::NoError)
- test sur la taille du fichier en reception (peut-être créer un autre test ?)
Commited revno 682
#14 Mis à jour par Icham Sirat il y a presque 9 ans
- Statut changé de Assigned - En cours à Fixed - Corrigé - Implémenté
Voir le ticket parent.