Empezando con Allure JBehave
Genera hermosos informes en HTML utilizando Allure Report y tus pruebas de JBehave.
INFO
Consulta los proyectos de ejemplo en github.com/allure-examples para ver Allure JBehave en acción.
Configuración
Para integrar Allure en un proyecto JBehave existente, necesitas:
- Añadir las dependencias de Allure a tu proyecto.
- Activar el plugin de Allure JBehave.
- Designar una ubicación para el almacenamiento de los resultados de Allure.
Añadir las dependencias de Allure
<!-- Define la versión de Allure que deseas utilizar mediante la propiedad allure.version -->
<properties>
<allure.version>2.24.0</allure.version>
</properties>
<!-- Añade allure-bom a la gestión de dependencias para garantizar que se utilizan las versiones correctas de todas las dependencias -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-bom</artifactId>
<version>${allure.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- Añade las dependencias necesarias de Allure a la sección de dependencias -->
<dependencies>
<dependency>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-jbehave5</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
// Define la versión de Allure que deseas utilizar mediante la propiedad allureVersion
val allureVersion = "2.24.0"
// ...
dependencies {
// Importa allure-bom para garantizar que se utilizan las versiones correctas de todas las dependencias
testImplementation(platform("io.qameta.allure:allure-bom:$allureVersion"))
// Añade las dependencias necesarias de Allure a la sección de dependencias
testImplementation("io.qameta.allure:allure-jbehave5")
}
// Define la versión de Allure que deseas utilizar mediante la propiedad allureVersion
def allureVersion = "2.24.0"
dependencies {
// Importa allure-bom para garantizar que se utilizan las versiones correctas de todas las dependencias
testImplementation platform("io.qameta.allure:allure-bom:$allureVersion")
// Añade las dependencias necesarias de Allure a la sección de dependencias
testImplementation "io.qameta.allure:allure-jbehave5"
}
Habilitar el plugin Allure JBehave
En tu clase Embeddable (como una clase basada en JUnitStories
), añade el reporter AllureJbehave5
al objeto de configuración.
import io.qameta.allure.jbehave5.AllureJbehave5;
import org.jbehave.core.configuration.Configuration;
import org.jbehave.core.configuration.MostUsefulConfiguration;
import org.jbehave.core.junit.JUnitStories;
import org.jbehave.core.reporters.StoryReporterBuilder;
public class Stories extends JUnitStories {
@Override
public Configuration configuration() {
return new MostUsefulConfiguration()
.useStoryReporterBuilder(new StoryReporterBuilder()
.withReporters(new AllureJbehave5()));
}
// ...
}
Especificar la ubicación de los resultados de Allure
Allure, por defecto, guarda los resultados de las pruebas en el directorio raíz del proyecto. Sin embargo, se recomienda almacenar los resultados de las pruebas en el directorio de salida de la compilación.
Para configurar esto, crea un archivo allure.properties
y colócalo en el directorio de recursos de pruebas de tu proyecto, que normalmente se encuentra en src/test/resources
:
#allure.properties
allure.results.directory=target/allure-results
#allure.properties
allure.results.directory=build/allure-results
#allure.properties
allure.results.directory=build/allure-results
Ejecutar las pruebas
Ejecuta tus pruebas de JBehave como lo harías normalmente. A continuación se muestran los comandos para usuarios de Gradle y Maven:
Para Gradle:
./gradlew test
gradlew test
Para Maven:
./mvnw verify
mvnw verify
Después de ejecutar las pruebas, Allure recopilará los datos de ejecución de las pruebas y los almacenará en el directorio allure-results
. Luego podrás generar un informe HTML a partir de estos resultados utilizando las herramientas de informes de Allure.
Después de ejecutar las pruebas, Allure recopilará los datos de ejecución de las pruebas y los almacenará en el directorio allure-results
. Luego podrás generar un informe HTML a partir de estos resultados utilizando las herramientas de informes de Allure.
Escribir pruebas
El adaptador Allure JBehave extiende las características estándar de informes de JBehave proporcionando capacidades adicionales para crear pruebas más informativas y estructuradas. Esta sección destaca las mejoras clave que pueden ser utilizadas:
- Anotación de Metadatos: Mejora los informes de pruebas con descripciones, enlaces y otros metadatos.
- Organización de Pruebas: Estructura tus pruebas en jerarquías claras para una mejor legibilidad y organización.
- División en Pasos: Divide las pruebas en pasos más pequeños para facilitar la comprensión y mantenimiento.
- Pruebas Parametrizadas: Describe claramente los parámetros para las pruebas parametrizadas para especificar diferentes escenarios.
- Archivos Adjuntos: Captura automáticamente capturas de pantalla y otros archivos durante la ejecución de la prueba.
- Selección de Pruebas: Utiliza un archivo de plan de pruebas para seleccionar qué pruebas ejecutar, lo que permite una ejecución flexible de las pruebas.
- Detalles del Entorno: Incluye información completa sobre el entorno para acompañar el informe de pruebas.
Agregar metadatos
Allure te permite enriquecer tus informes con una variedad de metadatos. Esta información adicional proporciona contexto y detalles para cada prueba, mejorando la utilidad del informe. Consulta la sección de referencia de metadatos para obtener una lista exhaustiva de lo que se puede añadir.
import io.qameta.allure.Allure;
import org.jbehave.core.annotations.Then;
public class JBehaveSteps {
@When("I open labels page")
public void openLabelsPage() {
Allure.description("This test attempts to create a label with specified title");
Allure.label("owner", "John Doe");
Allure.label("severity", "critical");
Allure.link("Website", "https://dev.example.com/");
Allure.issue("AUTH-123", "https://example.com/issues/AUTH-123");
Allure.tms("TMS-456", "https://example.com/tms/TMS-456");
// ...
}
}
Organizar pruebas
Allure facilita una navegación mejorada en los informes de pruebas permitiendo que las pruebas se organicen en estructuras jerárquicas. Como se explica en la sección sobre Mejorando la navegación en tu informe de pruebas, Allure JBehave soporta esta característica.
Para especificar la ubicación de una prueba en la jerarquía basada en suites:
Crear Sub-Pasos
Allure JBehave mejora los informes de pruebas permitiendo la creación de sub-pasos dentro de un solo paso de JBehave, lo que puede ser particularmente útil en casos donde tienes un conjunto de acciones que son:
- Lo suficientemente cohesivas como para ser descritas como un solo paso en un archivo de historia.
- Lo suficientemente complejas como para involucrar varios puntos potenciales de fallo.
Allure proporciona tres métodos para definir sub-pasos:
- Sub-Pasos Anotados: Definidos utilizando la anotación
@Step
. - Sub-Pasos Lambda: Utilizando expresiones lambda para definiciones de pasos más concisas e inline.
- Sub-Pasos No-Op: Utilizados como marcadores de posición o para estructurar pasos sin funcionalidad adicional.
Para obtener una guía detallada sobre cómo implementar cada tipo de sub-paso, consulta la referencia de pasos de prueba.
import io.qameta.allure.Step;
import org.jbehave.core.annotations.Then;
public class JBehaveSteps {
@When("I open labels page")
public void openLabelsPage() {
step1();
step2();
}
@Step("Step 1")
public void step1() {
subStep1();
subStep2();
}
@Step("Sub-step 1")
public void subStep1() {
// ...
}
@Step("Sub-step 2")
public void subStep2() {
// ...
}
@Step("Step 2")
public void step2() {
// ...
}
}
import io.qameta.allure.Allure;
import org.jbehave.core.annotations.Then;
public class JBehaveSteps {
@When("I open labels page")
public void openLabelsPage() {
Allure.step("Step 1", (step) -> {
// ...
Allure.step("Sub-step 1");
// ...
Allure.step("Sub-step 2");
});
Allure.step("Step 2", (step) -> {
// ...
});
}
}
Soporte para Esquemas de Escenarios
Allure JBehave ofrece soporte completo para Esquemas de Escenarios, una característica de JBehave que permite pruebas parametrizadas. No se necesita configuración especial para aprovechar esta capacidad dentro de Allure.
Scenario: Registration
When I go to the registration form
And I enter my details: <login>, <password>, <name>, <birthday>
Then the profile should be created
Examples:
| login | password | name | birthday |
| johndoe | qwerty | John Doe | 1970-01-01 |
| janedoe | 123456 | Jane Doe | 1111-11-11 |
import io.qameta.allure.Allure;
import org.jbehave.core.annotations.Then;
import org.jbehave.core.annotations.When;
public class JBehaveSteps {
@When("I go to the registration form")
public void goToRegistrationForm() {
// ...
}
@When("I enter my details: $login, $password, $name, $birthday")
public void enterMyDetails() {
// ...
}
@Then("the profile should be created")
public void profileShouldBeCreated() {
// ...
}
}
Además, la API en tiempo de ejecución de Allure puede ser utilizada para incluir parámetros adicionales en el informe de pruebas, ofreciendo capacidades de documentación mejoradas y mayor detalle para cada escenario de prueba:
Scenario: Registration
When I go to the registration form
And I enter my details
Then the profile should be created
import io.qameta.allure.Allure;
import org.jbehave.core.annotations.Then;
import org.jbehave.core.annotations.When;
public class JBehaveSteps {
@When("I go to the registration form")
public void goToRegistrationForm() {
// ...
}
@When("I enter my details")
public void enterMyDetails() {
Allure.parameter("login", "johndoe");
Allure.parameter("password", "qwerty");
Allure.parameter("name", "John Doe");
Allure.parameter("birthday", "1970-01-01");
// ...
}
@Then("the profile should be created")
public void profileShouldBeCreated() {
// ...
}
}
Adjuntar capturas de pantalla y otros archivos
En los informes de Allure, tienes la capacidad de adjuntar varios tipos de archivos, lo que puede mejorar enormemente la comprensión del informe. Una práctica común es adjuntar capturas de pantalla que capturen el estado de la interfaz de usuario en momentos específicos durante la ejecución de la prueba.
Allure JBehave ofrece múltiples métodos para crear adjuntos, ya sea desde archivos preexistentes o desde contenido generado en tiempo real. Para obtener instrucciones detalladas sobre cómo implementar adjuntos, consulta la sección de adjuntos en la referencia de Allure JBehave.
import io.qameta.allure.Allure;
import org.jbehave.core.annotations.Then;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class JBehaveSteps {
@When("I open labels page")
public void openLabelsPage() throws IOException {
// ...
Allure.attachment("data.txt", "This is the file content.");
Allure.attachment("img.png", Files.newInputStream(Paths.get("/path/img.png")));
}
}
Ejecución selectiva de pruebas (Allure TestOps)
DANGER
El plan de pruebas actualmente no es compatible con el adaptador Allure JBehave.
Información del entorno
Para la página principal del informe, puedes recopilar varios tipos de información sobre el entorno en el que se ejecutaron las pruebas.
Por ejemplo, es una buena idea usar esto para recordar las versiones de SO y Java. Esto puede ayudar al lector futuro a investigar errores que solo son reproducibles en algunos entornos.
Para proporcionar información del entorno, coloca un archivo llamado environment.properties
en el directorio allure-results
después de ejecutar las pruebas. Consulta el ejemplo en Archivo de entorno.
Ten en cuenta que esta característica debe usarse para propiedades que no cambian para todas las pruebas en el informe. Si tienes propiedades que pueden ser diferentes para distintas pruebas, considera usar Pruebas Parametrizadas.