Arc-E-Tect
Soy bastante nuevo en Gradle y estoy usando la versión 5.0. Soy razonablemente competente en Cucumber.
Tengo un proyecto simple que crea un archivo jar y ejecuta pruebas JUnit en ellos. Todo funciona bien. Ahora quiero agregar Cucumber al proyecto, pero quiero mis archivos .feature y los stepdefs relacionados en un árbol de origen alternativo (sourceSet en la terminología de Gradle).
Las fuentes se pueden encontrar en Githubque contiene un proyecto de muestra.
Mi árbol de fuentes debería verse así:
src/
cucumberTest/
java/
/...
resources/
/...
main/
java/
/...
resources/
/...
test/
/java
/...
resources/
/...
Cuando coloco los archivos .feature en cucumberTest/resources y los archivos stepdef java en test/java, mis pruebas de Cucumber funcionan bien. Pero cuando los stepdefs están en cucumberTest/java Cucumber no puede encontrar los archivos y aparece el error de que no están definidos.
Undefined scenarios:
src/cucumberTest/resources/is_it_saturday_yet.feature:4 # Sunday isn't Saturday
2 Scenarios (1 undefined, 1 passed)
6 Steps (1 skipped, 2 undefined, 3 passed)
0m0.134s
Mi archivo build.gradle es este:
plugins {
id 'java-library'
id 'java'
id 'idea'
}
repositories {
jcenter()
mavenCentral()
}
archivesBaseName = "helloworld"
version = '1.0'
dependencies {
api 'org.apache.commons:commons-math3:3.6.1'
implementation 'com.google.guava:guava:26.0-jre'
testImplementation 'junit:junit:4.12'
testCompile("junit:junit:4.12")
testCompile('org.junit.jupiter:junit-jupiter-api:5.3.2')
testCompile('org.junit.jupiter:junit-jupiter-params:5.3.2')
testRuntime('org.junit.jupiter:junit-jupiter-engine:5.3.2')
testRuntime("org.junit.vintage:junit-vintage-engine:5.3.2")
testCompile 'io.cucumber:cucumber-java:4.2.0'
testCompile 'io.cucumber:cucumber-junit:4.2.0'
}
configurations {
cucumberRuntime {
extendsFrom testRuntime
}
}
test {
useJUnitPlatform ()
testLogging {
events "passed", "skipped", "failed"
}
}
// Cucumber stuff:
sourceSets {
cucumberTest {
compileClasspath += sourceSets.main.output
runtimeClasspath += sourceSets.main.output
}
}
configurations {
cucumberTestImplementation.extendsFrom implementation
cucumberTestRuntimeOnly.extendsFrom runtimeOnly
}
dependencies {
testCompile 'io.cucumber:cucumber-java:4.2.0'
testCompile 'io.cucumber:cucumber-junit:4.2.0'
}
task cucumberTest() {
dependsOn assemble, compileTestJava
doLast {
javaexec {
main = "cucumber.api.cli.Main"
classpath = configurations.cucumberRuntime + sourceSets.main.output + sourceSets.test.output + sourceSets.cucumberTest.output
args = ['--plugin', 'pretty', '--glue', 'stepdefs.hellocucumber', 'src/cucumberTest/resources']
}
}
}
wrapper {
gradleVersion = '5.0'
}
He buscado por toda la web, pero siento que soy el único que quiere usar pepino-jvm con Gradle 5 y tener las pruebas BDD (pepino) separadas de las pruebas TDD (JUnit).
Puedo tomar la ruta fácil y mezclarlos a ambos, pero además de ser un poco puritano y tener BDD y TDD separados, también quiero entender qué está pasando y por qué no funciona.
Se agradece la ayuda. Gracias.
Iwán
Con la ayuda de Bart Kors, un buen amigo mío, pude hacer que funcionara según lo previsto. Actualicé el repositorio de Github para incluir el código de trabajo. Haz un clon de TrheeAxis/hola pepino para obtener el código de trabajo.
Yo sugeriría Gradle y pepino-JVM y Primeros pasos con Gradle: pruebas de integración
– MikeJRamsey56
21 de diciembre de 2018 a las 6:32
Gracias MikeJRamsey56. Me hizo avanzar más en mi búsqueda, pero finalmente resultó que con una clase CucumberTest comenzó a funcionar.
– Arc-E-Tect
22 de diciembre de 2018 a las 21:04