JUnit ErrorCollector @Rule con ejemplo

Tabla de contenido:

Anonim

En un escenario normal, siempre que identifique algún error durante la ejecución de la prueba, debe detener la prueba, corregir el error y volver a ejecutar la prueba.

Pero JUnit tiene un enfoque ligeramente diferente. Con el recopilador de errores JUnit, aún puede continuar con la ejecución de la prueba incluso después de que se encuentre un problema o la prueba falle. El recopilador de errores recopila todos los objetos de error y los informa solo una vez después de que finaliza la ejecución de la prueba.

En este tutorial, aprenderá:

  • ¿Qué es el recopilador de errores en JUnit?
  • ¿Qué es @Rule en jUnit?
  • Ejemplo usando ErrorCollector
  • Beneficios de JUnit ErrorCollector

¿Por qué utilizar Error Collector?

Mientras escribe una secuencia de comandos de prueba, desea ejecutar todas las pruebas incluso si alguna línea de código falla debido a una falla de la red, falla de afirmación o cualquier otra razón. En esa situación, puede seguir ejecutando el script de prueba utilizando una función especial proporcionada por JUnit conocida como "recopilador de errores".

Para esto, JUnit usa la anotación @Rule que se usa para crear un objeto de recopilador de errores. Una vez que se crea el objeto para el recopilador de errores, puede agregar fácilmente todos los errores al objeto utilizando el método addError (error Throwable). Como sabe, Throwable es la superclase de clase de excepción y error en Java. Cuando agrega errores de esta manera, estos errores se registrarán en el resultado de la prueba JUnit.

La ventaja de agregar todos los errores en un recopilador de errores es que puede verificar todos los errores a la vez. Además, si el script falla en el medio, aún puede continuar ejecutándolo

Nota : En el caso de utilizar un bloque simple de aserción o intento / captura, no será posible utilizar el método de recopilación de errores.

Código de muestra

Para comprender más sobre el recopilador de errores, vea el ejemplo de código a continuación que demuestra cómo crear un objeto del recopilador de errores y agregar todos los errores en ese objeto para rastrear el problema:

paquete guru99.junit;import org.junit.Rule;import org.junit.Test;import org.junit.rules.ErrorCollector;public class ErrorCollectorExample {@Reglacolector público ErrorCollector = nuevo ErrorCollector ();@Pruebaejemplo de vacío público () {collector.addError (new Throwable ("Hay un error en la primera línea"));collector.addError (new Throwable ("Hay un error en la segunda línea"));collector.checkThat (getResults (),not (containsString ("aquí hay un error")));// todas las líneas de código se ejecutarán y al final se producirá una falla combinadainiciar sesión.}}

¿Qué es @Rule en jUnit?

JUnit proporciona un tipo especial de manejo de pruebas, casos de prueba o suite de pruebas mediante el uso de la anotación @rule . Con @rule, puede agregar o redefinir fácilmente el comportamiento de la prueba.

Hay varias reglas integradas proporcionadas por la API de JUnit que un evaluador puede usar, o incluso usted puede escribir nuestra propia regla.

Vea la siguiente línea de código, que muestra cómo usar la anotación @rule junto con Error Collector:

@Reglacolector público ErrorCollector = nuevo ErrorCollector ();

Ejemplo usando ErrorCollector

Para comprender el recopilador de errores, creemos una clase y una regla para recopilar todos los errores. Agregará todos los errores usando addError (throwable) aquí.

Vea el código a continuación que simplemente crea una regla que no es más que la creación de un "objeto Colector de errores". Que se usa además para agregar todos los errores para informar el problema al final:

ErrorCollectorExample.java

paquete guru99.junit;import org.junit.Assert;import org.junit.Rule;import org.junit.Test;import org.junit.rules.ErrorCollector;public class ErrorCollectorExample {@Reglacolector público ErrorCollector = nuevo ErrorCollector ();@Pruebaejemplo de vacío público () {collector.addError (new Throwable ("Hay un error en la primera línea"));collector.addError (new Throwable ("Hay un error en la segunda línea"));System.out.println ("Hola");tratar {Assert.assertTrue ("A" == "B");} atrapar (Throwable t) {collector.addError (t);}System.out.println ("Mundo !!!!");}}

TestRunner.java

Agreguemos la clase de prueba anterior en un corredor de prueba y ejecútelo para recopilar todos los errores. Vea el código a continuación:

paquete guru99.junit;import org.junit.runner.JUnitCore;import org.junit.runner.Result;import org.junit.runner.notification.Failure;TestRunner de clase pública {public static void main (String [] args) {Resultado resultado = JUnitCore.runClasses (ErrorCollectorExample.class);for (Failure failure: result.getFailures ()) {System.out.println (failure.toString ());}System.out.println ("Resultado ==" + resultado.wasSuccessful ());}}

Producción:

Vea el seguimiento de fallas que rastrea todos los errores en un solo lugar:

Beneficios de JUnit ErrorCollector

Puede usar la aserción JUnit para la validación funcional o GUI, por ejemplo

  1. assertEquals (mensaje de cadena, objeto esperado, objeto real) que comparan que dos objetos son iguales.
  2. De manera similar, assertTrue (condición booleana) afirma que una condición es verdadera.

Con la aserción, la prueba de validación se vuelve fácil. Pero un problema importante es que la ejecución de la prueba se detendrá incluso si falla una sola afirmación.

La continuidad de las pruebas y el manejo de la recuperación son cruciales para el éxito de la automatización de pruebas. Error Collector es la mejor manera de manejar este tipo de escenarios.

Resumen :

  • El recopilador de errores de Junit permite que una prueba continúe incluso después de que se encuentra el primer problema y la prueba falla al final
  • El recopilador de errores recopila todos los objetos de error y lo informa solo, después de todo, la ejecución de la prueba sobre
  • El beneficio de agregar todos los errores en un recopilador de errores es que puede verificar todos los errores a la vez
  • El recolector de errores simplemente agrega errores usando el método addError (throwable err) proporcionado por ErrorCollector.java.