JBehave

De Dos Ideas.

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.

Contenido

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