Diferencia entre revisiones de «Indice en Concordion con Junit 4.4»

De Dos Ideas.
Saltar a: navegación, buscar
Línea 5: Línea 5:
  
 
Un ejemplo de la implementacion sería:
 
Un ejemplo de la implementacion sería:
 +
 +
Especificacion e instrumentación:
  
 
<code html4strict>
 
<code html4strict>
Línea 21: Línea 23:
 
</body>
 
</body>
 
</html>
 
</html>
 +
</code>
 +
 +
Implementación:
 +
 +
<code java5>
 +
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();       
 +
  }
 +
   
 +
}
 +
 
</code>
 
</code>

Revisión del 15:59 5 mar 2010

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();        
  }
   

}