Saltar al contenido

¿Cómo funciona Junit @Rule?

Solución:

Las reglas se utilizan para agregar funcionalidad adicional que se aplica a todas las pruebas dentro de una clase de prueba, pero de una manera más genérica.

Por ejemplo, ExternalResource ejecuta código antes y después de un método de prueba, sin tener que usar @Before y @After. Usando un ExternalResource en vez de @Before y @After brinda oportunidades para una mejor reutilización del código; la misma regla se puede utilizar desde dos clases de prueba diferentes.

El diseño se basó en: Interceptores en JUnit

Para obtener más información, consulte JUnit wiki: Reglas.

Junit Rules funcionan según el principio de AOP (programación orientada a aspectos). Intercepta el método de prueba, lo que brinda la oportunidad de hacer algunas cosas antes o después de la ejecución de un método de prueba en particular.

Tome el ejemplo del siguiente código:

public class JunitRuleTest {

  @Rule
  public TemporaryFolder tempFolder = new TemporaryFolder();

  @Test
  public void testRule() throws IOException {
    File newFolder = tempFolder.newFolder("Temp Folder");
    assertTrue(newFolder.exists());
  }
} 

Cada vez que se ejecuta el método de prueba anterior, se crea una carpeta temporal y se elimina después de la ejecución del método. Este es un ejemplo de una regla lista para usar proporcionada por Junit.

También se puede lograr un comportamiento similar creando nuestras propias reglas. Junit proporciona la interfaz TestRule, que se puede implementar para crear nuestra propia regla Junit.

Aquí hay un enlace útil para referencia:

  • http://www.codeaffine.com/2012/09/24/junit-rules/

La explicación de cómo funciona:

JUnit envuelve su método de prueba en un objeto Statement para que la declaración y Execute() ejecuta su prueba. Entonces en lugar de llamar statement.Execute() directamente para ejecutar su prueba, JUnit pasa la declaración a una regla de prueba con el @Rule anotación. La función “aplicar” de TestRule devuelve una nueva declaración dada la declaración con su prueba. La nueva Declaración Execute() El método puede llamar al método de ejecución de la declaración de prueba (o no, o llamarlo varias veces) y hacer lo que quiera before and after.

Ahora, JUnit tiene una nueva declaración que hace más que simplemente ejecutar la prueba, y puede volver a pasar eso a más reglas antes de finalmente llamar a Execute.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *