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

De Dos Ideas.
Saltar a: navegación, buscar
 
(No se muestran 3 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
'''Las nuevas versiones de Concordion ya poseen esta utilidad pero requieren Junit 4.5.'''
+
{{aviso|texto=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
 
Esta es una solución para correr especificaciones enlazadas en un BDD, utilizando Concordion con Junit 4.4
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 10: Línea 12:
 
<html xmlns:concordion="http://www.concordion.org/2007/concordion">
 
<html xmlns:concordion="http://www.concordion.org/2007/concordion">
 
<head>
 
<head>
<link href="concordion.css" rel="stylesheet" type="text/css" />
+
    <link href="concordion.css" rel="stylesheet" type="text/css" />
<title>Dos Ideas - Indice BDD</title>
+
    <title>Dos Ideas - Indice BDD</title>
 
</head>
 
</head>
 
<body>
 
<body>
<h1>Índice</h1>
+
    <h1>Índice</h1>
<ul>
+
    <ul>
<li><a href="MostrarDatosDebitoActualSpecification.html" concordion:assertEquals="ejecutarTest(#TEXT)">Mostrar Datos Debito Actual</a></li>
+
        <li><a href="EspecificacionNumeroUnoSpecification.html" concordion:assertEquals="ejecutarTest(#TEXT)">Especificacion Numero Uno</a></li>
<li><a href="MostrarLineasDelClienteSpecification.html" concordion:assertEquals="ejecutarTest(#TEXT)">Mostrar Lineas Del Cliente</a></li>
+
        <li><a href="EspecificacionNumeroDosSpecification.html" concordion:assertEquals="ejecutarTest(#TEXT)">Especificacion Numero Dos</a></li>
</ul>
+
    </ul>
 
</body>
 
</body>
 
</html>
 
</html>
 
</code>
 
</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>
 +
 +
Al correr el IndexTest se invoca al método
 +
<code java5>
 +
public String ejecutarTest(String nombre) throws ClassNotFoundException;
 +
</code>
 +
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 ==
 +
* [http://www.concordion.org/dist/1.3.1/test-output/concordion/spec/concordion/command/run/Run.html: concordion:run]

Revisión actual del 16:11 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();        
  }
   

}

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