Concordion Con Spring

De Dos Ideas.
Saltar a: navegación, buscar

La última versión del framework de Concordion (1.3.x) no es compatible con JUnit 4.4, Mientras que Spring Test 2.5.x no es compatible con JUnit 4.5 (solucionado en Spring 3.0.M3). Esto hace que no sea posible utilizar ambos frameworks en un mismo test sin hacer algunos arreglos.

Una solución es utilizar JUnit 4.4 (Spring OK) y hacer la inicialización de Concordion utilizando el mecanismo de la versión 1.2.x.

@ContextConfiguration(locations = "gir-spring-config.xml" public class GirFunctionalTest extends AbstractJUnit4SpringContextTests {

   @Test
   public void test() throws IOException {
       new ConcordionBuilder().build().process(this).assertIsSatisfied(this);
   }
   public Result realizarFuncionalidadBlah(String x, String y, String z) {
       ...
   }
   

}


Al extender de AbstractJUnit4SpringContextTests (o cualquier otra clase de test de Spring), se inicializará el contexto de Spring de la manera usual.

El método test anotado con @Test lo ejecutará JUnit al correr los tests. Dentro de este método se consigue un nuevo Builder de Concordion y se le pide que procese este objeto (this).

Concordion, a través del nombre de la clase, busca un html con el mismo nombre pero que no termina en "Test" y con extensión .html. Luego de parsear el html, invoca los métodos que estén en el objeto de test instanciado por JUnit y genera el html de salida.

El método assertIsSatisfied(this) es un assert para indicarle a JUnit si la corrida fue exitosa o no. El detalle se encuentra en el html generado por concordion. Es posible omitir la invocación a este método, de esta manera, JUnit reportará el test siempre como exitoso durante el desarrollo de la funcionalidad. (Recordar que BDD debe guiar el desarrollo, por lo que si no se hace así, el test estará fallando durante todo el desarrollo). Igualmente, aunque JUnit lo reporte como exitoso, el html resultante de Concordion mostrará con que parte de la funcionalidad de la historia se está cumpliendo.