Tests et TestNG
Présentation
Présentation de TestNG
TestNG pour Test Next Generation
Ce framework de tests est inspiré de JUnit.
Bon à savoir: toutes les classes de code que vous avez écrites avec JUnit peuvent ĂȘtre utilisées par TestNG, c'est parfaitement compatible.
Quelques caractéristiques majeures à noter:
- Cet outil est compatible (par le biais de plugin) avec pas mal
d'IDE tels que :
- Eclipse
- IntelliJ
- NetBeans
- Le code de test que nous créons est THREADSAFE
- Nous pouvons définir comment lancer en parallèle les différents tests
- TestNG nous permet de générer des tests de tout type (unitaires, intégration, système)
- A la fin de l'exécution d'une campagne de tests, les résultats sont disponibles dans un dossier "test-output"
Comment invoquer TestNG?
TestNG peut se lancer de plusieurs façons...
- en utilisant un fichier testng.xml
- en utilisant ANT
- ou encore directement en ligne de commande
Le fichier testng.xml
Voici tout d'abord un exemple de fichier xml:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="testGestionBiblio">
<test name="testRecherche" verbose="5">
<packages>
<package name="univ.mlv.fr.xpose.tests.packages"></package>
</packages>
</test>
<test name="testAjout" verbose="5">
<classes>
<class name="univ.mlv.fr.xpose.tests.classes.TestAjoutBibliotheque"></class>
</classes>
</test>
</suite>
Cet exemple est simple et ne permet d'illustrer qu'une petite partie des fonctionnalités de TestNG
En effet, sur cet exemple nous ne voyons que deux façons de "présenter" les différentes classes de tests. Sur cet exemple nous voyons ces deux méthodes:
- par package de tests
- par classes de tests
YAML possible
Il est possible de choisir de lancer ses tests en utilisant YAML à la place de notre fichier testng.xml. Voici un exemple fourni par le site testng.org:
<suite name="SingleSuite" verbose="2" thread-count="4">
<parameter name="n" value="42" />
<test name="Regression2">
<groups>
<run>
<exclude name="broken" />
</run>
</groups>
<classes>
<class name="test.listeners.ResultEndMillisTest" />
</classes>
</test>
</suite>
Ce qui peut ĂȘtre remplacé par le code YAML:
name: SingleSuite
threadCount: 4
parameters: { n: 42 }
tests:
- name: Regression2
parameters: { count: 10 }
excludedGroups: [ broken ]
classes:
- test.listeners.ResultEndMillisTest