Problèmes de tests unitaire avec QtCreator
Résolu
Mourad2009B
Messages postés
123
Date d'inscription
Statut
Membre
Dernière intervention
-
Mourad2009B Messages postés 123 Date d'inscription Statut Membre Dernière intervention -
Mourad2009B Messages postés 123 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Je travaille avec QtCreator 7.0.2 comme IDE basé sur Qt 6.2.3 (sous windows 10).
J’ai créé un projet de sous-répertoire, dans le quel j’ai créé :
mainwindow.h
mainwindow.cpp
mainwindow.ui
J’ai pu tester la fonction
Si quelqu’un a une idée s'il vous plaît.
Merci d’avance
Je travaille avec QtCreator 7.0.2 comme IDE basé sur Qt 6.2.3 (sous windows 10).
J’ai créé un projet de sous-répertoire, dans le quel j’ai créé :
- un projet Qt widgets Application ;
- un projet Auto test project.
Dans le projet Qt widgets Application
main.cpp#include "mainwindow.h" #include <QApplication> #include <QLocale> #include <QTranslator> int main(int argc, char *argv[]) { QApplication a(argc, argv); QTranslator translator; const QStringList uiLanguages = QLocale::system().uiLanguages(); for (const QString &locale : uiLanguages) { const QString baseName = "ConversionsProject_" + QLocale(locale).name(); if (translator.load(":/i18n/" + baseName)) { a.installTranslator(&translator); break; } } MainWindow w; w.show(); return a.exec(); }
mainwindow.h
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QMessageBox> QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); std::list<int> getDecimalsNumbers(int nbr); void conversionBinaryToDecimal(int nbr); public slots: void validationSlot(); private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h" #include "ui_mainwindow.h" using namespace std; MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); setFixedSize(430,185); ui->rdbBinaire->setChecked(true); ui->lineEditBinaire->setInputMask("BBBBBBBBBBBBBBBBBBBBBBBBBB"); QObject::connect(ui->btnValider, SIGNAL(clicked()), this , SLOT(validationSlot())); } MainWindow::~MainWindow() { delete ui; } void MainWindow::validationSlot() { if(ui->rdbBinaire->isChecked()) { conversionBinaryToDecimal(ui->lineEditBinaire->text().length()); QMessageBox::information(this, "Attention", "Binnaire"); } else if(ui->rdbDecimal->isChecked()) QMessageBox::information(this, "Attention", "Decimal"); else QMessageBox::information(this, "Attention", "Autres"); } void MainWindow::conversionBinaryToDecimal(int nbr) { list<int> listOfDecimalNumber = getDecimalsNumbers(nbr); list<int>::reverse_iterator it; int somme = 0; qsizetype i = 0; QChar car; for(it = listOfDecimalNumber.rbegin(); it != listOfDecimalNumber.rend(); it++, i++) { qDebug() << "__________________________________________________\n"; car = ui->lineEditBinaire->text().at(i); somme += (*it) * car.digitValue(); qDebug() << "*it = " << *it; qDebug() << "i = " << i; qDebug() << "car = " << car.digitValue(); qDebug() << "somme = " << somme; } ui->lineEditDecimal->setText(QString::number(somme)); } list<int> MainWindow::getDecimalsNumbers(int nbr) { list<int> listOfDecimalNumber; for(int i(0); i < nbr; i++) { listOfDecimalNumber.push_back(pow(2,i)); //ActualNumber *= 2; } return listOfDecimalNumber; }
mainwindow.ui
<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>MainWindow</class> <widget class="QMainWindow" name="MainWindow"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>310</width> <height>175</height> </rect> </property> <property name="minimumSize"> <size> <width>310</width> <height>175</height> </size> </property> <property name="maximumSize"> <size> <width>310</width> <height>175</height> </size> </property> <property name="windowTitle"> <string>MainWindow</string> </property> <widget class="QWidget" name="centralwidget"> <layout class="QVBoxLayout" name="verticalLayout_2"> <item> <widget class="QGroupBox" name="GrBox1"> <property name="title"> <string>Entrez un nombre</string> </property> <widget class="QWidget" name="layoutWidget"> <property name="geometry"> <rect> <x>10</x> <y>20</y> <width>273</width> <height>86</height> </rect> </property> <layout class="QGridLayout" name="gridLayout"> <item row="1" column="1"> <widget class="QLineEdit" name="lineEditBinaire"/> </item> <item row="2" column="0"> <widget class="QRadioButton" name="rdbAutres"> <property name="text"> <string>Autre</string> </property> </widget> </item> <item row="0" column="2" rowspan="3"> <layout class="QVBoxLayout" name="verticalLayout"> <item> <widget class="QPushButton" name="btnValider"> <property name="text"> <string>&Valider</string> </property> </widget> </item> <item> <widget class="QPushButton" name="btnQuitter"> <property name="text"> <string>&Quitter</string> </property> </widget> </item> </layout> </item> <item row="0" column="1"> <widget class="QLineEdit" name="lineEditDecimal"/> </item> <item row="0" column="0"> <widget class="QRadioButton" name="rdbDecimal"> <property name="text"> <string>Décimal</string> </property> </widget> </item> <item row="1" column="0"> <widget class="QRadioButton" name="rdbBinaire"> <property name="text"> <string>Binaire</string> </property> </widget> </item> <item row="2" column="1"> <widget class="QLineEdit" name="lineEditAutres"/> </item> </layout> </widget> </widget> </item> </layout> </widget> <widget class="QMenuBar" name="menubar"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>310</width> <height>22</height> </rect> </property> </widget> <widget class="QStatusBar" name="statusbar"/> </widget> <resources/> <connections> <connection> <sender>btnQuitter</sender> <signal>clicked()</signal> <receiver>MainWindow</receiver> <slot>close()</slot> <hints> <hint type="sourcelabel"> <x>255</x> <y>106</y> </hint> <hint type="destinationlabel"> <x>154</x> <y>87</y> </hint> </hints> </connection> </connections> </ui>
Dans le projet Auto test project
tst_test.cpp#include <QtTest> #include <QCoreApplication> #include "../ConversionsProject/mainwindow.h" // add necessary includes here class Test : public QObject { Q_OBJECT public: Test(); ~Test(); private slots: void initTestCase(); void cleanupTestCase(); void test_case1(); void test_getDecimalsNumbers(); void test_lineEditEntree(); }; Test::Test() { } Test::~Test() { } void Test::initTestCase() { } void Test::cleanupTestCase() { } void Test::test_case1() { } void Test::test_getDecimalsNumbers() { MainWindow fentP; std::list<int> listOfDecimalNumber({1,2,4,8,16,32,64,128,256}); QCOMPARE(fentP.getDecimalsNumbers(9), listOfDecimalNumber); } void Test::test_lineEditBinaire() { } Dans la fonction void Test::test_getDecimalsNumbers() { MainWindow fentP; std::list<int> listOfDecimalNumber({1,2,4,8,16,32,64,128,256}); QCOMPARE(fentP.getDecimalsNumbers(9), listOfDecimalNumber); }
J’ai pu tester la fonction
getDecimalsNumbers()qui se trouve dans le fichier
mainwindow.h(voir
Test::test_getDecimalsNumbers()), mais je n’arrive pas à accéder aux objets graphiques qui se trouvent dans le fichier
mainwindow.uipour pouvoir faire des tests
Si quelqu’un a une idée s'il vous plaît.
Merci d’avance
A voir également:
- Problèmes de tests unitaire avec QtCreator
- Test de performance pc - Guide
- Tester les composants de son pc - Guide
- Roland souhaite calculer le montant total des ventes de son magasin. le fichier contient, pour chaque produit, la quantité vendue et le prix unitaire. calculez le montant total des ventes. - Forum Études / Formation High-Tech
- Calcul d'un total ✓ - Forum Excel
- Comment tester une antenne tv avec un multimètre - Forum TNT / Satellite / Réception
5 réponses
Bonjour.
Note quand dans un texte il y a plein de gras ça donne l'impression de se faire crier dessus, et quand on se fait crier dessus on n'a pas envie d'aider
De plus, plus le code est simple à lire plus y'a des chances que quelqu'un le lisent.
Je t'invite donc d'une part à lire ce tuto sur la bonne utilisation des balises de code https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code et à reformuler ta question sans tout ce gras qui ne sert à rien.
Note quand dans un texte il y a plein de gras ça donne l'impression de se faire crier dessus, et quand on se fait crier dessus on n'a pas envie d'aider
De plus, plus le code est simple à lire plus y'a des chances que quelqu'un le lisent.
Je t'invite donc d'une part à lire ce tuto sur la bonne utilisation des balises de code https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code et à reformuler ta question sans tout ce gras qui ne sert à rien.
Bonjour à tous,
Merci pour m'avoir répondu Whismeril,
Pour le gras c'était surtout pour remplacer ce genre d'images

c'est les menus que j'ai mis en gras pour les distingués du reste du texte, et non pour créer sur qui que ce soit, par contre je créerai de joie si vous m'aidez à trouver une solution (je suis bloqué depuis 2 jours).
Mais si ce n'est pas autorisé, je les enlève.
Merci pour m'avoir répondu Whismeril,
Pour le gras c'était surtout pour remplacer ce genre d'images
c'est les menus que j'ai mis en gras pour les distingués du reste du texte, et non pour créer sur qui que ce soit, par contre je créerai de joie si vous m'aidez à trouver une solution (je suis bloqué depuis 2 jours).
Mais si ce n'est pas autorisé, je les enlève.
Bonjour,
Par rapport à la mise en forme
J'ai remis en forme tes messages. Pour les prochaines fois :
Par rapport au problème initial
As-tu regardé les liens suivants ?
Bonne chance
Par rapport à la mise en forme
J'ai remis en forme tes messages. Pour les prochaines fois :
- Pense à préciser le langage utilisé dans ta balise de code (clique sur le triangle à droite du 4e bouton au dessus de la boîte dans laquelle tu tapes ton message).
- Généralement on utilise plutôt de l'italique quand on parle de texte dans l'interface.
- Tu peux éditer ton premier message pour voir comment j'ai procédé.
Par rapport au problème initial
As-tu regardé les liens suivants ?
Bonne chance
Bonjour mamiemando,
Avant tout, Merci pour tes conseils.
J'ai déjà vu les tuto du Framework. pour les objets graphiques ils font des tests sur des objets du Framework lui même, alors que moi je pensais qu'il fallait que je le fasse sur l'objet graphique que moi même j'ai créé, mais ça revient au même. donc le problème est résolu.
Avant tout, Merci pour tes conseils.
J'ai déjà vu les tuto du Framework. pour les objets graphiques ils font des tests sur des objets du Framework lui même, alors que moi je pensais qu'il fallait que je le fasse sur l'objet graphique que moi même j'ai créé, mais ça revient au même. donc le problème est résolu.
Parfait, alors je bascule le sujet en résolu. Sache tu peux le faire toi même dans tes futurs fils de discussion (voir ce lien).
Bonne continuation
Bonne continuation
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question