sábado, 16 de septiembre de 2017

JUnit Rule: Nivel Básico

La idea principal de los 'Rule' es añadir funcionalidad extra y controlar el comportamiento de todos los test de una clase. Hay múltiples Rule ya existentes y además existe la posibilidad de poder extenderlo y crear las nuestras propias.

Vamos a empezar con un ejemplo sencillo de uno de los Rule que viene con JUnit por defecto. Este Rule nos permitirá ir chequeando objectos, y en caso de fallo no saltará la ejecución.

@Rule
public final ErrorCollector collector = new ErrorCollector();
@Test
public void example() {
 collector.checkThat("object1", IsEqual.equalTo("object2"));
 collector.checkThat("object1", IsEqual.equalTo("object1"));
 collector.checkThat(1, IsEqual.equalTo(2));
}

En vez de eso, irá recopilando los fallos y ejecutando todos los posibles errores para mostrarlos al final. Esta es la respuesta:

JunitRuleExamples
es.home.example.test.JunitRuleExamples
example(es.home.example.test.JunitRuleExamples)
java.lang.AssertionError: 
Expected: "object2"
     but: was "object1"
 at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)...
java.lang.AssertionError: 
Expected: <2>
     but: was <1>
 at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
 at org.junit.Assert.assertThat(Assert.java:956)...

Hay una gran variedad de Rules por defecto que puedes ver aquí. Por el nombre más o menos te haces una idea de para que sirven: TemporaryFolder, ExternalResource, Verifier, TestWatcher, TestName, Timeout, ExpectedException, ClassRule, RuleChain.

No hay comentarios:

Publicar un comentario