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