TestNG - Reportero personalizado

En esta sección, cubriremos, con un ejemplo, el método para escribir su reportero personalizado y adjuntarlo a TestNG. Para escribir una clase de reportero personalizada, nuestra clase de extensión debe implementar la interfaz IReporter. Sigamos adelante y creemos un ejemplo con el reportero personalizado.

Crear clase de caso de prueba

Cree una clase de Java, digamos, SampleTest.java en 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 clase de prueba anterior contiene tres métodos de prueba de los cuales testMethodOne y testMethodThree pasarán cuando se ejecuten, mientras que testMethodTwo falla al pasar un valor booleano falso al método Assert.assertTrue, que se usa para las condiciones de verdad en las pruebas.

Crear clase de informes personalizados

Crea otra clase nueva llamada CustomReporter.java en 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 clase anterior implementa la interfaz org.testng.IReporter . Implementa la definición para el método generateReport de la interfaz IReporter . El método toma tres argumentos:

  • xmlSuite, que es la lista de suites mencionadas en el XML de prueba que se está ejecutando.

  • suites, que contiene la información de la suite después de la ejecución de la prueba. Este objeto contiene toda la información sobre los paquetes, clases, métodos de prueba y sus resultados de ejecución de prueba.

  • outputDirectory, que contiene la información de la ruta de la carpeta de salida, donde se generarán los informes.

Crea testng.xml

Cree testng.xml en C:\> TestNG_WORKSPACE para ejecutar caso (s) de prueba.

<?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>

Compile las clases SampleTest, CustomReporter usando javac.

C:\TestNG_WORKSPACE>javac CustomReporter.java SampleTest.java

Ahora, ejecute testng.xml.

C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml

Verifique la salida.

===============================================
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

El ejemplo anterior muestra un reportero personalizado simple, que imprime el número de pruebas fallidas, pasadas y omitidas en la consola para cada suite incluida en dicha ejecución de prueba. Reporter se utiliza principalmente para generar el informe final para la ejecución de la prueba. La extensión se puede utilizar para generar archivos de formato XML, HTML, XLS, CSV o de texto, según los requisitos del informe.