TestNG - Reporter personnalisé
Dans cette section, nous allons couvrir, avec un exemple, la méthode d'écriture de votre reporter personnalisé et de l'attacher à TestNG. Pour écrire une classe de reporter personnalisée, notre classe d'extension doit implémenter l'interface IReporter. Allons-y et créons un exemple avec le reporter personnalisé.
Créer une classe de cas de test
Créez une classe Java, par exemple SampleTest.java dans C:\> TestNG_WORKSPACE.
import org.testng.Assert;
import org.testng.annotations.Test;
public class SampleTest {
@Test
public void testMethodOne() {
Assert.assertTrue(true);
}
@Test
public void testMethodTwo() {
Assert.assertTrue(false);
}
@Test(dependsOnMethods = {"testMethodTwo"})
public void testMethodThree() {
Assert.assertTrue(true);
}
}
La classe de test précédente contient trois méthodes de test parmi lesquelles testMethodOne et testMethodThree réussiront une fois exécutées, tandis que testMethodTwo échouera en passant une valeur booléenne fausse à la méthode Assert.assertTrue, qui est utilisée pour les conditions de vérité dans les tests.
Créer une classe de rapport personnalisée
Créez une autre nouvelle classe nommée CustomReporter.java dans C:\> TestNG_WORKSPACE.
import java.util.List;
import java.util.Map;
import org.testng.IReporter;
import org.testng.ISuite;
import org.testng.ISuiteResult;
import org.testng.ITestContext;
import org.testng.xml.XmlSuite;
public class CustomReporter implements IReporter{
@Override
public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites,
String outputDirectory) {
//Iterating over each suite included in the test
for (ISuite suite : suites) {
//Following code gets the suite name
String suiteName = suite.getName();
//Getting the results for the said suite
Map<String, ISuiteResult> suiteResults = suite.getResults();
for (ISuiteResult sr : suiteResults.values()) {
ITestContext tc = sr.getTestContext();
System.out.println("Passed tests for suite '" + suiteName +
"' is:" + tc.getPassedTests().getAllResults().size());
System.out.println("Failed tests for suite '" + suiteName +
"' is:" + tc.getFailedTests().getAllResults().size());
System.out.println("Skipped tests for suite '" + suiteName +
"' is:" + tc.getSkippedTests().getAllResults().size());
}
}
}
}
La classe précédente implémente l' interface org.testng.IReporter . Il implémente la définition de la méthode generateReport de l' interface IReporter . La méthode prend trois arguments -
xmlSuite, qui est la liste des suites mentionnées dans le XML de test en cours d'exécution.
suites, qui contient les informations sur la suite après l'exécution du test. Cet objet contient toutes les informations sur les packages, les classes, les méthodes de test et leurs résultats d'exécution de test.
outputDirectory, qui contient les informations sur le chemin du dossier de sortie, où les rapports seront générés.
Créer testng.xml
Créez testng.xml dans C:\> TestNG_WORKSPACE pour exécuter des cas de test.
<?xml version = "1.0" encoding = "UTF-8"?>
<suite name = "Simple Reporter Suite">
<listeners>
<listener class-name = "CustomReporter" />
</listeners>
<test name = "Simple Reporter test">
<classes>
<class name = "SampleTest" />
</classes>
</test>
</suite>
Compilez les classes SampleTest, CustomReporter à l'aide de javac.
C:\TestNG_WORKSPACE>javac CustomReporter.java SampleTest.java
Maintenant, exécutez testng.xml.
C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml
Vérifiez la sortie.
===============================================
Simple Reporter Suite
Total tests run: 3, Failures: 1, Skips: 1
===============================================
Passed tests for suite 'Simple Reporter Suite' is:1
Failed tests for suite 'Simple Reporter Suite' is:1
Skipped tests for suite 'Simple Reporter Suite' is:1
L'exemple précédent montre un simple rapporteur personnalisé, qui imprime le nombre de tests ayant échoué, réussi et ignoré sur la console pour chaque suite incluse dans ladite exécution de test. Reporter est principalement utilisé pour générer le rapport final pour l'exécution du test. L'extension peut être utilisée pour générer des fichiers au format XML, HTML, XLS, CSV ou texte en fonction des exigences du rapport.