Publicado: agosto 25, 2020
TestNG Listeners: Descripción general y demostración completa
Descripción general de TestNG
TestNG, acrónimo de «Test Next Generation» (Pruebas de Próxima Generación), es un popular framework de automatización de pruebas que permite crear scripts de código legibles y generar informes de pruebas personalizados. Inicialmente, TestNG se diseñó para realizar pruebas unitarias. Posteriormente, se amplió para abarcar todo tipo de pruebas, incluyendo pruebas de integración de sistemas y pruebas unitarias. Cedric Beust diseñó la herramienta en 2003, inspirándose en JUnit y NUnit. Gracias a sus potentes características, como anotaciones, listeners y proveedores de datos, TestNG es ahora más popular y fácil de usar que JUnit.
¿Por qué es popular TestNG?
TestNG permite a los desarrolladores escribir fácilmente casos de prueba mediante anotaciones que se pueden priorizar, agrupar y ejecutar con facilidad. Admite pruebas basadas en datos y parametrización, y se integra fácilmente con entornos de desarrollo integrados (IDE) como Eclipse e IntelliJ, y con herramientas de compilación como Ant, Maven y Gradle. Permite la ejecución en paralelo de casos de prueba, así como agruparlos y ejecutar un grupo específico. TestNG genera informes de prueba en HTML con detalles sobre los casos omitidos, fallidos y superados. También genera registros junto con los informes.
¿Qué son los listeners de TestNG?
Una de las características importantes del framework TestNG son los listeners. Se trata de una interfaz que escucha eventos predefinidos en los scripts de prueba y modifica el comportamiento predeterminado de la herramienta TestNG. Tanto si desea personalizar informes como generar registros para pruebas específicas, los listeners de TestNG le permiten hacerlo. Los testers también querrán definir prerrequisitos y configuraciones de limpieza para cada proyecto de prueba. Automatice el proceso de configuración de los prerrequisitos antes de comenzar su proceso de pruebas. Realice las operaciones de limpieza una vez finalizadas las pruebas con un listener de TestNG.
En TestNG existen diferentes tipos de Listeners.
- ITestListener
- ISuiteListener
- Reportero
- IAnotaciónTransformador
- IAnotaciónTransformer2
- IMethodInterceptor
- Enganchable
- Configurable
- IConfigurationListenerIConfigurationListener
- IExecutionListener
- Interceptor de método invocado
- IInvokedMethodIntercepter2
Aunque existen varios listeners, no todos se utilizan con regularidad. Otros listeners populares de TestNG son ITestListener, ISuiteListener e Ireporter.
Cada Listener de TestNG contiene distintos métodos que se invocan para realizar una tarea específica. Por ejemplo, cuando una prueba falla o se omite, es posible que desee tomar una captura de pantalla de esa prueba en particular para ver qué salió mal. En ese caso, puede invocar el método `onTestFailure()` dentro del `ITestListener` y mover la ejecución de la prueba a un bloque específico y ejecutar un evento determinado.
Por ejemplo, ITestListner contiene los siguientes métodos.
- al inicio()Se invoca al inicio de una prueba.
- onTestFailure()Se invoca cuando falla la prueba.
- onTestSuccess()Se invoca cuando una prueba resulta exitosa.
- onTestSkipped()Se invoca al omitir pruebas.
- al finalizar()Se invoca al finalizar las pruebas.
- onTestFailedButWithinSuccessPercentage()Se invoca cuando la prueba falla, pero los resultados se encuentran dentro del porcentaje de éxito.
Oyente de IReporter
Genera informes personalizados con el IReporter Listener. Este invoca el método generateReport() al ejecutar todas las pruebas que aceptan los siguientes argumentos:
- suites: El objeto que contiene la información del conjunto de pruebas, como el paquete, el método de prueba, la clase, los resultados de las pruebas, etc.
- Suite XMLEs el archivo XML que contiene la lista de suites que se van a ejecutar.
IInvokeMethod:
Esta es una interfaz de escucha de TestNG, utilizada para realizar acciones específicas antes y después de las pruebas.
- antes de la invocación()Se invoca antes de cada prueba.
- después de la invocación()Se invoca después de cada prueba.
Procedimiento de instalación
Aquí están los requisitos previos para usar un TestNG Listener.
- Kit de desarrollo de Java (JDK)
- Selenio
- IDE para crear código (Eclipse o IntelliJ)
- PruebaNG
- Herramienta de compilación (Gradle o Maven)
Paso 1: Instalar Java
Para descargar Java, visite el siguiente enlace:
https://www.oracle.com/in/java/technologies/javase-downloads.html

Haz clic en la opción de descarga de JDK y acepta el acuerdo de licencia.
La instalación de Java es bastante sencilla. Una vez descargado el software, haga doble clic en el paquete para iniciar la instalación.
Una vez finalizada la instalación, aparecerá un mensaje indicando que el software se ha instalado correctamente.
Paso 2: Configurar las variables de entorno para Java
Para usar Java, debes especificar la ruta de Java en el sistema. Para ello,
- Abrir Propiedades del sistema -> Configuración avanzada del sistema -> Avanzado -> Variables de entorno
Seleccione la pestaña «Variables de usuario para el usuario», haga clic en la ruta y luego en Editar. Ahora, agregue la ruta de Java.
- C:\Archivos de programa\Java\jdk-14.0.2
En la ruta de 'variables del sistema', introduzca la ruta de la carpeta Bin.
- C:\Archivos de programa\Java\jdk-14.0.2\bin

Java ya está configurado y listo para usar.
Paso 3: Instalar el IDE Eclipse
Para crear y editar el código de prueba, necesitas un entorno de desarrollo integrado (IDE). Puedes usar Eclipse o IntelliJ. Para instalar Eclipse, visita el siguiente enlace:
https://www.eclipse.org/downloads/
Descarga el entorno de desarrollo integrado (IDE) Eclipse. La última versión es Eclipse IDE 2020-06.

Una vez descargado el software, haga doble clic en él para iniciar el proceso de instalación.
- Elige el IDE Eclipse para desarrolladores Java.
- Si ves una notificación en la esquina superior derecha, puedes hacer clic en ella y elegir "actualizar" para que el instalador se actualice.
- Seleccione la carpeta de instalación y haga clic en Instalar.
- Ahora, el instalador comienza a instalar Eclipse.
- Una vez finalizada la instalación, haga clic en Iniciar.
- Elija un espacio de trabajo predeterminado de Eclipse.
- Eclipse ya está instalado correctamente. Al abrirlo por primera vez, aparecerá una pantalla de bienvenida.
Paso 4: Instalar Selenium WebDriver
Para usar WebDriver y realizar pruebas, debe instalar el servidor Selenium. Puede descargar Selenium Standalone Server aquí:
https://www.selenium.dev/downloads/

Una vez descargado el archivo zip, extráigalo y guarde su contenido en una carpeta aparte.
Paso 5: Instalar TestNG
Para instalar TestNG, abre el IDE de Eclipse y haz clic en Ayuda.

Ahora, escribe TestNG en el cuadro de búsqueda y pulsa Ir.
- La última versión de Eclipse no muestra TestNG en los resultados de búsqueda. Como alternativa, visite este sitio y descargue TestNG manualmente. https://dl.bintray.com/testng-team/testng-eclipse-release/
- Haz clic en la opción 'comprimido'. En la siguiente pantalla, haz clic en la última versión y descarga el archivo zip.
- Guarda el archivo comprimido en una carpeta aparte. Ahora, abre el IDE de Eclipse, haz clic en «Ayuda» y elige «Instalar nuevo software».
- Haz clic en "Añadir" e indica la ruta donde has guardado el archivo zip de TestNG. Dale también un nombre.
- Haz clic en 'Agregar'. En la siguiente pantalla, selecciona TestNG y haz clic en Siguiente.
- En la siguiente pantalla, revise los elementos que se instalarán y haga clic en Siguiente. La siguiente pantalla muestra un acuerdo de licencia. Acéptelo y haga clic en Finalizar. Se le pedirá que reinicie Eclipse.
- Una vez reiniciado Eclipse, haga clic en Nuevo archivo -> Proyecto.
- Dale un nombre a tu proyecto y haz clic en siguiente.
- En la siguiente pantalla, haga clic en la pestaña de la biblioteca y luego en "Agregar biblioteca".
- Haz clic en «Añadir biblioteca» y selecciona «TestNG». Haz clic en Siguiente y luego en Finalizar. Esto configurará la biblioteca TestNG como la biblioteca predeterminada para este proyecto.
- Ahora, abre Eclipse en la vista del explorador de paquetes y haz clic con el botón derecho en el proyecto que creaste anteriormente. Selecciona Nuevo -> Otro
- Haz clic en TestNG, selecciona la clase TestNG y haz clic en Siguiente.
- Especifique un nombre de clase y haga clic en Finalizar.
Ahora, TestNG está listo para su uso.
Paso 6: Instalar una herramienta de compilación (por ejemplo, Gradle)
Herramientas de compilación para automatizar el proceso de creación de aplicaciones ejecutables a partir del código fuente. Gradle y Maven son las herramientas de compilación más populares.
Visita el siguiente enlace y descarga la última versión de Gradle.
Descomprime los archivos en una carpeta aparte. Ahora, añade la ruta de la carpeta bin de Gradle a las variables de entorno. (Sigue los pasos indicados en el paso 2).
- Ejemplo: C:\Gradle\gradle-6.6\bin
Para usar Gradle en Eclipse, abre el IDE de Eclipse -> Nuevo -> Otro -> Gradle.

Para la demostración de automatización de pruebas móviles, utilizaremos el siguiente código para Gradle.
[Java]
aplicar plugin: 'java'
repositorios { mavenCentral() maven { url “https://cloud.experitest.com/repo/” }
}
prueba { useTestNG() “20.7”
}
dependencies { testCompile group: 'org.testng', name: 'testng', version: '6.11' testCompile group: 'com.experitest', name: 'SeeTest-client', version: “20.7”
}
[/Java]
¡Tu entorno de pruebas ya está listo!
TestNG Listeners – Primera demostración de prueba
Para comprobar cómo funciona un Listener de TestNG, ejecuta este sencillo proyecto.
Crea un nuevo proyecto Java en Eclipse.

Dale un nombre al proyecto y haz clic en siguiente.

Ahora, haga clic en la pestaña de la biblioteca y luego haga clic en Agregar archivos jar externos.

Seleccione la ruta donde ha guardado los archivos jar de Selenium y haga clic en Finalizar.
Ahora, puedes ver el archivo jar de Selenium listado en 'Bibliotecas de referencia' en la pestaña del explorador de paquetes en Eclipse.

Ahora, haz clic derecho en 'src' y crea un nuevo paquete y una nueva clase. Asigna un nombre a la clase. Por ejemplo, aquí crearemos dos clases: una clase padre con listeners y una clase hija que ejecuta los casos de prueba.

Entonces, se crea la primera clase con el nombre ExperitestParent.java.
En la clase padre, utilizamos dos listeners de TestNG.
- Método onTestSuccess() que se ejecutará cuando el caso de prueba se haya ejecutado correctamente.
- Método onTestFailure() que se ejecutará cuando falle el caso de prueba.
Aquí está el código utilizado para la clase ExperitestParent.java:
[Java]
paquete ExperitestListener;
importar org.testng.ITestListener;
importar org.testng.ITestResult;
public class ExperiencetParent implements ITestListener
{
@Override public void onTestSuccess(ITestResult expresult) {
System.out.print(“Prueba superada. Los detalles son “+expresult.getName()); } @Override public void onTestFailure(ITestResult expresult) {
System.out.print(“La prueba falló. Los detalles son: “+expresult.getName()); }
}
[/Java]
Ahora, crea una nueva clase y nómbrala como ExperitestChild.java
Esta clase contendrá los casos de prueba. Un caso de prueba devuelve el título del sitio web de Experitest y el segundo verifica si el título coincide con el título predefinido. También contendrá el Listener de TestNG añadido de la siguiente manera:
- @Listeners(ExperitestListener.ExperitestParent.class)
Aquí está el código utilizado para ExperitestChild.java:
[Java]
paquete ExperitestListener;
importar org.openqa.selenium.WebDriver;
importar org.openqa.selenium.chrome.ChromeDriver;
importar org.testng.annotations.Listeners;
importar org.testng.annotations.Test;
@Listeners(ExperitestListener.ExperitestParent.class)
public class ExperitestChild { @Test
público void TítuloExperiencia()
{
System.setProperty("webdriver.chrome.driver", "C:\chromedriver_win32\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get("https://www.experitest.com"); System.out.print(driver.getTitle()); driver.quit();
} @Test public void ExperitestTitleName() {
System.setProperty(“webdriver.chrome.driver”, “C:\chromedriver_win32\chromedriver.exe”); WebDriver driver = new ChromeDriver(); driver.get(“https://www.experitest.com”); String Actual = driver.getTitle(); String Expected = “Digital.aiif (Actual.equals(Expected)) { System.out.println(“¡Prueba superada!”); } else { Assert.assertTrue(false); } driver.close(); }
}
[/Java]
Al ejecutar el conjunto de pruebas, los listeners de TestNG escuchan los eventos y reaccionan cuando una prueba pasa o falla.

En este caso, la prueba que devuelve el título del sitio web de Experitest se superó. La prueba que verificaba el título falló.

TestNG: automatización de pruebas móviles
Aquí tienes otro ejemplo de automatización de pruebas móviles. Selenium no es compatible con pruebas móviles, por lo que debes instalar un framework de automatización de pruebas móviles como Appium. Sin embargo, la configuración y gestión de Appium implican una curva de aprendizaje pronunciada. Experitest resuelve este problema ofreciendo Appium Studio, que aprovecha las funcionalidades de Appium pero elimina toda la complejidad. Experitest también ofrece un plugin de Appium Studio para Eclipse, lo que te permite ejecutar la automatización de pruebas directamente desde tu IDE de Eclipse.
Ve a Eclipse Marketplace y busca Appium Studio para instalar el plugin.

Una vez instalado el plugin, aparecerá la pestaña Appium Studio en tu Eclipse IdE.
- Ahora, haga clic en el menú de Windows y vaya a Perspectiva -> Abrir perspectiva -> Otra.
- Selecciona 'Móvil' y haz clic en 'abrir'.
- El entorno de desarrollo integrado (IDE) Eclipse abre la perspectiva móvil.
Ahora puedes ejecutar la automatización de pruebas móviles desde tu IDE de Eclipse. Sin embargo, necesitas una suscripción a SeeTest Cloud de Experitest para usar dispositivos móviles en tiempo real en tus proyectos de automatización de pruebas. También puedes aprovechar la prueba gratuita.

Ahora, crea un nuevo proyecto y, dentro de él, un paquete y dos clases. Estas clases se llamarán SeeTestparent.java y SeeTestchild.java. La clase SeeTestparent contendrá los listeners, mientras que SeeTestchild contendrá los casos de prueba.
Código de la clase SeeTestparent.java:
[Java]
paquete com.experitest.auto;
importar org.testng.ITestContext;
importar org.testng.ITestListener;
importar org.testng.ITestResult;
public class SeeTestparent implements ITestListener{ @Override public void onTestSuccess(ITestResult expresult) { System.out.print(“Prueba superada. Detalles: “+expresult.getName()); } @Override public void onTestFailure(ITestResult expresult) { System.out.print(“Prueba fallida. Detalles: “+expresult.getName()); } @Override public void onFinish(ITestContext arg0) { // TODO: Método generado automáticamente } @Override public void onStart(ITestContext arg0) { // TODO: Método generado automáticamente } @Override public void onTestFailedButWithinSuccessPercentage(ITestResult arg0) { // TODO: Método generado automáticamente } @Override public void onTestSkipped(ITestResult arg0) { // TODO: Método generado automáticamente } @Override public void onTestStart(ITestResult arg0) { // TODO: Método generado automáticamente }
}
[/Java]
Ver código de Testchild.java:
[Java]
paquete com.experitest.auto;
importar io.appium.java_client.ios.IOSDriver;
importar io.appium.java_client.ios.IOSElement;
import io.appium.java_client.remote.IOSMobileCapabilityType;
importar io.appium.java_client.remote.MobileCapabilityType;
importar org.openqa.selenium.By;
importar org.openqa.selenium.ScreenOrientation;
importar org.openqa.selenium.remote.DesiredCapabilities;
import static org.testng.Assert.assertTrue;
import java.net.MalformedURLException;
importar java.net.URL;
importar org.testng.Assert;
importar org.testng.annotations.*;
@Listeners(com.experitest.auto.SeeTestparent.class)
public class SeeTestchild { private String host = “https://cloud.SeeTest.io”; private String accessKey = “Ingrese su clave de acceso aquí”; protected IOSDriver driver = null; DesiredCapabilities dc = new DesiredCapabilities(); @BeforeTest public void setUp1() throws MalformedURLException { dc.setCapability(“testName”, “Demostración nativa de iOS de inicio rápido”); dc.setCapability(“accessKey”, accessKey); dc.setCapability(“deviceQuery”, “@os='ios' y @category='PHONE'”); dc.setCapability(MobileCapabilityType.APP, “cloud:com.experitest.ExperiBank”); dc.setCapability(IOSMobileCapabilityType.BUNDLE_ID, “com.experitest.ExperiBank”); driver = new IOSDriver<>(new URL(“https://cloud.SeeTest.io/wd/hub”), dc); @Test public void SeeTestDemo1() { driver.rotate(ScreenOrientation.PORTRAIT); driver.findElement(By.xpath(“//*[@id='usernameTextField']”)).sendKeys(“company”); driver.hideKeyboard(); driver.findElement(By.xpath(“//*[@id='passwordTextField']”)).sendKeys(“company”); driver.findElement(By.xpath(“//*[@id='loginButton']”)).click(); driver.findElement(By.xpath(“//*[@id='makePaymentButton']”)).click(); driver.findElement(By.xpath(“//*[@id='phoneTextField']”)).sendKeys(“0541234567”); driver.findElement(By.xpath("//*[@id='nameTextField']")).sendKeys("Jon Snow"); driver.findElement(By.xpath("//*[@id='amountTextField']")).sendKeys("50"); driver.findElement(By.xpath("//*[@id='countryButton']")).click(); driver.findElement(By.xpath("//*[@id='Switzerland']")).click(); driver.findElement(By.xpath("//*[@id='sendPaymentButton']")).click(); driver.findElement(By.xpath("//*[@id='Yes']")).click(); driver.findElement(By.xpath("//*[@id='logoutButton']")).click(); } @Test public void SeeTestDemo2() { Assert.assertTrue(false); } @AfterTest public void tearDown1() { driver.quit(); } }
[/Java]
Aquí está el informe. De las dos pruebas, una ha fallado.

El informe muestra aquí los detalles de la prueba fallida:

Aquí se puede ver el TestNG Listener informando sobre los detalles de las pruebas superadas y las pruebas fallidas.

Conclusión
TestNG Listener es una práctica función para que los equipos de pruebas y control de calidad automaticen fácilmente los proyectos de pruebas e identifiquen con claridad el rendimiento de cada uno. Si una prueba falla o se omite, puede tomar una captura de pantalla e identificar el motivo.
La nube de SeeTest le permite aprovechar Los listeners de TestNG permiten ejecutar fácilmente proyectos de automatización de pruebas desde tu IDE favorito, con la posibilidad de personalizar informes y registros para obtener informes y análisis en tiempo real. Más información en Digital.ai Continuous Testing.
También puede interesarle
Pero, ¿dónde vas a realizar todas esas pruebas?
Algo interesante está sucediendo ahora mismo en los equipos de control de calidad. IA…
Dispositivos virtuales frente a dispositivos reales: ¿Qué es lo que realmente importa en las pruebas móviles?
Si has dedicado tiempo a probar aplicaciones móviles, ya sabes…
Grabador de pruebas de iOS: una forma más rápida de convertir la validación en automatización.
Hemos escuchado sus comentarios. La grabadora de pruebas de iOS es…