Chapitre 1 : Écrire un test unitaire
Ce premier chapitre montre comment écrire un test unitaire simple et comment exécuter le cas de test en tant que programme exécutable autonome.
Écrire un test
Supposons que vous souhaitiez tester le comportement de notre classe ` QString `. Tout d’abord, vous avez besoin d’une classe contenant vos fonctions de test. Cette classe doit hériter de ` QObject` :
#include <QTest>
class TestQString: public QObject
{
Q_OBJECT
private slots:
void toUpper();
};Remarque : vous devez inclure l’en-tête ` QTest ` et déclarer les fonctions de test comme des slots privés afin que le framework de test puisse les trouver et les exécuter.
Ensuite, vous devez implémenter la fonction de test elle-même. L’implémentation pourrait ressembler à ceci :
void TestQString::toUpper()
{
QString str = "Hello";
QVERIFY(str.toUpper() == "HELLO");
}La macro ` QVERIFY()` évalue l’expression qui lui est transmise en argument. Si l’expression renvoie `true`, l’exécution de la fonction de test se poursuit. Dans le cas contraire, un message décrivant l’échec est ajouté au journal de test, et l’exécution de la fonction de test s’arrête.
Mais si vous souhaitez un résultat plus détaillé dans le journal de test, vous devriez plutôt utiliser la macro QCOMPARE() :
Si les chaînes ne sont pas identiques, le contenu des deux chaînes est ajouté au journal de test, ce qui permet de comprendre immédiatement pourquoi la comparaison a échoué.
Préparation de l’exécutable autonome
Enfin, pour faire de notre cas de test un exécutable autonome, les deux lignes suivantes sont nécessaires :
QTEST_MAIN(TestQString)
#include "testqstring.moc"La macro QTEST_MAIN() se développe en une simple méthode main() qui exécute toutes les fonctions de test. Notez que si la déclaration et l’implémentation de notre classe de test se trouvent toutes deux dans un fichier .cpp, nous devons également inclure le fichier moc généré pour que l’introspection de Qt fonctionne.
Compilation de l’exécutable
Vous pouvez compiler l’exécutable du scénario de test à l’aide de CMake ou de qmake.
Compilation avec CMake
Configurez vos paramètres de compilation dans votre fichier CMakeLists.txt :
# Copyright (C) 2022 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
cmake_minimum_required(VERSION 3.16)
project(tutorial1 LANGUAGES CXX)
find_package(Qt6 REQUIRED COMPONENTS Core Gui Test Widgets)
qt_standard_project_setup()
qt_add_executable(tutorial1
testqstring.cpp
)
set_target_properties(tutorial1 PROPERTIES
WIN32_EXECUTABLE TRUE
MACOSX_BUNDLE TRUE
)
target_link_libraries(tutorial1 PRIVATE
Qt6::Core
Qt6::Gui
Qt6::Test
Qt6::Widgets
)
install(TARGETS tutorial1
BUNDLE DESTINATION .
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
)
qt_generate_deploy_app_script(
TARGET tutorial1
OUTPUT_SCRIPT deploy_script
NO_UNSUPPORTED_PLATFORM_ERROR
)
install(SCRIPT ${deploy_script})Ensuite, depuis la ligne de commande, exécutez soit ` cmake `, soit le script de commodité ` qt-cmake ` situé dans ` Qt-prefix/<version>/<platform>/bin/qt-cmake` :
<Qt-prefix>/<version>/<platform>/bin/qt-cmake <source-dir> <build-dir> -G NinjaLancez ensuite l'outil de génération de votre choix pour compiler l'exécutable. Ici, nous utilisons Ninja :
ninjaCompilation avec qmake
Configurez vos paramètres de compilation dans votre fichier .pro:
QT += widgets testlib
SOURCES = testqstring.cpp
# install
target.path = $$[QT_INSTALL_EXAMPLES]/qtestlib/tutorial1
INSTALLS += targetEnsuite, exécutez qmake, puis make pour compiler votre exécutable :
qmake
makeRemarque : si vous utilisez Windows, remplacez ` make ` par ` nmake ` ou par l'outil de compilation de votre choix.
Exécution du fichier exécutable
L'exécution du fichier exécutable obtenu devrait vous donner le résultat suivant :
********* Start testing of TestQString *********
Config: Using QtTest library %VERSION%, Qt %VERSION%
PASS : TestQString::initTestCase()
PASS : TestQString::toUpper()
PASS : TestQString::cleanupTestCase()
Totals: 3 passed, 0 failed, 0 skipped
********* Finished testing of TestQString *********Félicitations ! Vous venez d’écrire et d’exécuter votre premier test unitaire à l’aide du framework Qt Test.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.