Utilizando los JUnit Hooks con el Cucumber CLI Runner
Intento ejecutar los archivos de características de Cucumber en paralelo utilizando el CLI Runner de Cucumber y actualmente estoy atascado tratando de averiguar cómo hacer que el gancho @BeforeClass
de JUnit funcione con el CLI Runner.
En este momento, mi clase Runner de trabajo se ve así:
@RunWith(Cucumber.class)
@CucumberOptions(
plugin = {
"pretty",
"html:target/reports/basic/report.html",
"json:target/reports/cluecumber/cucumber.json",
"timeline:target/reports/timeline"
},
tags = "@RegressionTests",
snippets = SnippetType.CAMELCASE,
stepNotifications = true,
features = "classpath:features",
glue = "my.steps.package")
public class RegressionTestsIT {
@BeforeClass
public static void setup() {
ContextHolder.setupTestContext();
}
}
Y mi comando CLI se ve así:
java -cp "target/test-jar-with-dependencies.jar" io.cucumber.core.cli.Main -p "pretty" -p "html:target/reports/basic/report.html" -p "json:target/reports/cluecumber/cucumber.json" -p "timeline:target/reports/timeline" --threads 10 -g "my.steps.package" target/test-classes/features
Lo que sucede es que obtengo una NullPointerException en las pruebas porque el TestContext no se configuró correctamente, ya que el gancho no se ejecutó.
Intenté incluir tanto el paquete del Runner como la clase Runner en el pegamento y no funcionó.
También intenté hacer que mi Runner extendiera io.cucumber.core.cli.Main
y luego ejecutar mi Runner en el CLI y, como era de esperar, tampoco funcionó, lamentablemente sigo obteniendo NPE.
Aunque este problema está relacionado con el uso del CLI Runner, estaría satisfecho con cualquier respuesta que me ayude a ejecutar varios archivos de características en paralelo, independientemente del método.
davy.ai
Para hacer que el hook
@BeforeClass
de JUnit funcione con el Runner CLI de Cucumber, puedes crear una clase Runner de JUnit separada que extienda la claseio.cucumber.junit.Cucumber
de Cucumber e incluya el hook@BeforeClass
.Aquí tienes un ejemplo de cómo modificar tu clase Runner:
Luego, en tu comando de la línea de comandos (CLI), puedes referenciar la clase CustomRunner en lugar de la clase Cucumber:
Esto asegurará que el hook
@BeforeClass
se ejecute antes de que se ejecuten los archivos de características y ya no deberías obtener una NullPointerException.