Diferencia entre revisiones de «JBehave»

De Dos Ideas.
Saltar a: navegación, buscar
(Ver también)
 
Línea 115: Línea 115:
 
* [[Herramientas Para Pruebas De Aceptacion]]
 
* [[Herramientas Para Pruebas De Aceptacion]]
 
* [http://jbehave.org Web oficial de JBehave]
 
* [http://jbehave.org Web oficial de JBehave]
 +
 +
[[Category:Java]]
 +
[[Category:BDD]]

Revisión actual del 14:29 31 ago 2009

JBehave es un framework Java para mejorar la colaboración entre desarrolladores, QA, analistas de negocio, Dueño Del Producto y todos los miembros del equipo a través de escenarios automatizados y legibles.

Características

  • Escenarios escritos en texto plano
  • Posibilidad de crear múltiples escenarios en un único archivo
  • Escenarios pendientes
  • Resultados claros y fáciles de leer
  • Captura de parámetros de los escenarios
  • Conversión de parámetros a objetos propios
  • Soporte para múltiples lenguajes y términos de escenarios
  • Altamente configurable
  • Soporte para Maven

Los escenarios

La forma de escribir escenarios de JBehave es similar a una Historia De Usuario. En general, una Historia De Usuario suele escribirse como:

Como [Rol]
Quiero [Caracteristica]
De manera que reciba [Valor]

Los escenarios en JBehave se escriben de la siguiente forma:

Given [Contexto]
When [Evento que ocurre]
Then [Salida esperada]

Ejemplo

Vamos a probar un escenario de login. Las clases que intervienen en esto serán:

  • LoginService: la clase de negocio bajo prueba
  • login_exitoso: un archivo de texto que contiene el escenario
  • LoginExitoso: una clase Java que representará al escenario
  • LoginSteps: una clase Java que contendrá la lógica de la prueba

LoginService.java

Esta será la clase de negocio que probaremos. Tiene un único método login el cual recibe un usuario y una clave. Si la clave es igual al usuario en mayúsculas devuelve true, sino false.

package com.dosideas.business;

public class LoginService {

   public boolean login(String user, String pass) {
       if (user.toUpperCase().equals(pass)) {
           return true;
       } else {
           return false;
       }
   }

}

login_exitoso

Este es el archivo de texto con el escenario. Aquí podremos ir agregando los diferentes escenarios que querramos validar.

Given No estoy logueado
When me logueo como usuario Zim y clave ZIM
Then el login tiene que devolver true

LoginExitoso.java

Esta clase extiende a org.jbehave.scenario.Scenario y se encarga de representar al escenario a utilizar. Lo único que hace es cargar la implementación a usar para realizar las pruebas, en este caso LoginSteps.

Esta clase tiene que estar junto al archivo de texto login_exitoso.

Esta clase es un test de JUnit, y será la que ejecutaremos para realizar las pruebas.

package com.dosideas.jbehave;

import org.jbehave.scenario.Scenario;

public class LoginExitoso extends Scenario {

   public LoginExitoso() {
       super(new LoginSteps());
   }

}

LoginSteps.java

Esta clase contiene la lógica de las pruebas, y es quien realmente asocia los mensajes de los escenarios a código para ejecutar. En esta clase, a través de las anotaciones, se convierte parte del texto en parámetros.

package com.dosideas.jbehave;

import static org.jbehave.Ensure.ensureThat; import com.dosideas.business.LoginService; import org.jbehave.scenario.annotations.Given; import org.jbehave.scenario.annotations.Then; import org.jbehave.scenario.annotations.When; import org.jbehave.scenario.steps.Steps;

public class LoginSteps extends Steps {

   private boolean login;
   @Given("No estoy logueado")
   public void logout() {
       login = false;
   }
   @When("me logueo como usuario $usuario y clave $pass")
   public void login(String usuario, String pass) {
       LoginService loginService = new LoginService();
       login = loginService.login(usuario, pass);
   }
   @Then("el login tiene que devolver $loginEsperado")
   public void comprobarLogin(String loginEsperado) {
       ensureThat(login == Boolean.valueOf(loginEsperado));
   }

}

Ejecutamos...

La ejecución es como un test JUnit más, ya que la clase LoginExitoso es un test JUnit.

Ver también