Développeuses & développeurs Progress : n’oubliez pas les tests unitaires !
Face à une accélération de vos mises en production en SaaS, les tests unitaires sont un moyen d’assurer en amont la fiabilité de votre code. Qu’il soit procédural ou orienté objet grâce à des classes, PROGRESS met à votre disposition son ABLUnit pour sécuriser le bon fonctionnement de vos programmes.
Qu'est-ce qu'ABLUnit ?
ABLUnit est un framework de tests unitaires intégré à Progress Developer Studio for OpenEdge (PDSOE). Il permet de créer, exécuter et gérer des tests unitaires pour les programmes ABL (Advanced Business Language).
Principales fonctionnalités
1. Annotations de Test :
- Utilise des annotations comme @Test, @Before, @After, @Setup, et @TearDown pour identifier et gérer les méthodes de test.
- Les annotations permettent à ABLUnit de reconnaître quelles méthodes exécuter avant et après chaque test, ainsi que les méthodes de test elles-mêmes.
2. Création de Tests :
- PDSOE fournit des assistants pour créer des classes de test, des procédures de test et des suites de test.
- Les tests peuvent être créés manuellement en ajoutant les annotations nécessaires ou en utilisant les assistants intégrés.
3. Exécution de Tests :
- Les tests peuvent être exécutés directement depuis PDSOE en utilisant l'option Run As > ABLUnit Test .
- ABLUnit génère un fichier XML de résultats (results.xml) qui contient les détails des tests exécutés, y compris les succès et les échecs.
4. Rapports et Analyse :
- Les résultats des tests sont affichés dans une vue dédiée dans PDSOE, permettant une analyse rapide des succès et des échecs.
- Les développeurs peuvent utiliser ces rapports pour identifier et corriger les bugs au niveau du code.
Avantages d'ABLUnit
- Détection Précoce des Bugs : En testant les unités de code de manière isolée, les développeurs peuvent détecter et corriger les bugs plus tôt dans le cycle de développement.
- Maintenance Facilitée : Les tests unitaires facilitent la maintenance du code en s'assurant que les modifications n'introduisent pas de nouveaux bugs.
- Documentation du Code : Les tests unitaires servent également de documentation vivante du comportement attendu du code.
Un exemple de Test Unitaire
Voici un exemple simple d'une classe de test unitaire pour une procédure d'addition :
/* addition.p */
PROCEDURE addition:
DEFINE INPUT PARAMETER iNum1 AS INTEGER NO-UNDO.
DEFINE INPUT PARAMETER iNum2 AS INTEGER NO-UNDO.
DEFINE OUTPUT PARAMETER iResult AS INTEGER NO-UNDO.
ASSIGN iResult = iNum1 + iNum2.
END PROCEDURE.
/* test_addition.cls */
USING Progress.Lang.* FROM PROPATH.
USING Progress.Test.* FROM PROPATH.
CLASS test_addition:
@Test.
METHOD PUBLIC VOID TestAddition():
DEFINE VARIABLE iResult AS INTEGER NO-UNDO.
RUN addition (2, 3, OUTPUT iResult).
ASSERT:ARE-EQUAL(5, iResult, "Le résultat de l'addition devrait être 5").
END METHOD.
END CLASS.
Liens utils
[1] video d’introduction : OpenEdge: Using ABLUnit for Testing
[2] les bases : ABLUnit testing with the PDSOE ABL Unit testing framework
[3] Documenntation au sein de PDSOE : Creating test cases using ABLUnit - documentation.progress.com
Patrick