Indice en Concordion con Junit 4.4

De Dos Ideas.
Revisión del 16:11 5 mar 2010 de 201.251.185.130 (discusión)
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

Las nuevas versiones de Concordion ya poseen esta utilidad pero requieren Junit 4.5.

Esta es una solución para correr especificaciones enlazadas en un BDD, utilizando Concordion con Junit 4.4 Para realizar esto se utiliza la Clase JUnit4TestAdapter el cual se encargará de ejecutar los TestCase enlazados.

Un ejemplo de la implementacion sería:

Especificacion e instrumentación:

<?xml version="1.0" encoding="ISO-8859-1"?> <html xmlns:concordion="http://www.concordion.org/2007/concordion"> <head>

   <link href="concordion.css" rel="stylesheet" type="text/css" />
   <title>Dos Ideas - Indice BDD</title>

</head> <body>

Índice

  • <a href="EspecificacionNumeroUnoSpecification.html" concordion:assertEquals="ejecutarTest(#TEXT)">Especificacion Numero Uno</a>
  • <a href="EspecificacionNumeroDosSpecification.html" concordion:assertEquals="ejecutarTest(#TEXT)">Especificacion Numero Dos</a>

</body> </html>

Implementación:

package com.tm.eb.web.adhesiondebitoautomatico;

import java.io.IOException; import org.concordion.internal.ConcordionBuilder; import org.junit.Test; import junit.framework.JUnit4TestAdapter; import junit.framework.TestResult;

public class IndexTest {

   public static final String SUFIJO = "SpecificationTest";
   public static final String ERROR = "ERROR";
   public static final String FAIL = "FAIL";
   
   @Test
   public void test() throws IOException {
       new ConcordionBuilder().build().process(this).assertIsSatisfied(this);
   }
    
   public String ejecutarTest(String nombre) throws ClassNotFoundException{        
       JUnit4TestAdapter adaptadorTest;
       TestResult result = new TestResult();      
       String nombreClase = getPaquete() + "." + getNombreCorto(nombre);
       
       adaptadorTest = new JUnit4TestAdapter(Class.forName(nombreClase));
       adaptadorTest.run(result);    
       
       if ( result.failureCount() > 0 ) {
           return nombre + " " + FAIL;
       }
       if ( result.errorCount() > 0 ) {
           return nombre + " " + ERROR;
       }
       return nombre;
  }
   
  protected String getNombreCorto(String nombreSeparadoEspacio) {       
      String nombreCompacto = nombreSeparadoEspacio.replaceAll("\\s", "");
      return nombreCompacto + SUFIJO;
  }
   
  protected String getPaquete() {      
       Package paquete;
       paquete = this.getClass().getPackage();           
       return paquete.getName();        
  }
   

}

Al correr el IndexTest se invoca al método

public String ejecutarTest(String nombre) throws ClassNotFoundException;

por cada enlace declarado. Para este caso en particular se utilizó la siguiente convención:

 Dado el texto el enlace, su compactación más un sufijo determinado, indican la especificación a ejectuar.

Ver también