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.