Saltar al contenido

¿Cómo usar JUnit 5 con Gradle?

Solución:

Nuevo: compatibilidad con JUnit 5 en Gradle 4.6

Como se señaló en este número de GitHub de Gradle 4.6 en adelante, ¡JUnit 5 es compatible! Notas de la versión oficial de 4.6 (en el momento de editar la última, pero consulte la página de versiones de GitHub para asegurarse de usar la última versión) en docs.gradle.org. La configuración anterior seguirá funcionando, pero usarla hace que el archivo de compilación sea mucho más limpio.

[Edit May 2019] Como señaló @deFreitas en su respuesta, la documentación de JUnit ha mejorado y ahora proporcionan un ejemplo completo en https://github.com/junit-team/junit5-samples/tree/r5.4.0/junit5-jupiter-starter- gradle, vea especialmente el build.gradle allí. Afortunadamente, resulta ser efectivamente el mismo que el de esta respuesta.

Actualizar Gradle

Primero, asegúrese de estar usando la última versión de Gradle, verifique las últimas versiones en sus versiones de GitHub. Si eso es, por ejemplo, 4.6, ejecútelo en una terminal en la ubicación de su proyecto gradlew wrapper --gradle-version=4.6 o asegúrese de actualizar esta línea en su gradle/wrapper/gradle-wrapper.properties expediente: distributionUrl=https://services.gradle.org/distributions/gradle-4.6-all.zip.

Cómo utilizar el JUnit 5 integrado

Luego, con los archivos java, la estructura de directorios, etc. de la pregunta, build.gradle el archivo será (usando el nuevo plugins cuadra)

plugins {
    id 'java'
}

repositories {
    mavenCentral()
    mavenLocal()
}

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.0.3'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.0.3'
}

// These lines can be removed when you use the default directories src/main/kotlin and src/test/kotlin
sourceSets {
    main.java.srcDirs += 'src'
    main.resources.srcDirs += 'src'
    test.java.srcDirs += 'test'
    test.resources.srcDirs += 'test'
}

// Java target version
sourceCompatibility = 1.8

test {
    // Enable JUnit 5 (Gradle 4.6+).
    useJUnitPlatform()

    // Always run tests, even when nothing changed.
    dependsOn 'cleanTest'

    // Show test results.
    testLogging {
        events "passed", "skipped", "failed"
    }
}

PD: Para la versión mínima absoluta, vea la respuesta de Ray.

Androide

En Android, logré ejecutar la prueba JUnit 5 de la pregunta agregando lo siguiente al archivo de compilación del módulo de mi aplicación. Como puede ver, las dependencias son las mismas, pero no necesitaba useJUnitPlatform() y el bloque de configuración de prueba es ligeramente diferente.

apply plugin: 'com.android.application'
// In fact I am not sure you need this, but I had it included to run Spek tests anyway
apply plugin: 'de.mannodermaus.android-junit5' 

repositories {
    mavenCentral()
    jcenter()
}

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.3.1'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.3.1'
}


android {
    // I'm omitting your other configurations like compileSdkVersion, buildTypes etc.

    testOptions {
        unitTests.all {

            // Always run tests, even when nothing changed.
            dependsOn 'clean'

            // Show test results.
            testLogging {
                events "passed", "skipped", "failed"
            }
        }
    }
}

sin embargo solo me funciona cuando ejecuto el Gradle test tarea, no cuando corro el check tarea. Como de costumbre, pruebo esto creando una prueba fallida y luego intento si la tarea de Gradle pasa o falla.

Necesita los motores para ambas versiones de JUnit y debe aplicar el complemento gradle de la plataforma JUnit. No veo eso en su archivo Gradle. Aquí hay una compilación de Gradle en funcionamiento que ejecuta JUnit 4 y 5:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath ("org.junit.platform:junit-platform-gradle-plugin:1.0.0-M4")
    }
}

apply plugin: 'org.junit.platform.gradle.plugin'
...

dependencies {
...
    testCompile("junit:junit:4.12")
    testRuntime("org.junit.vintage:junit-vintage-engine:4.12.0-M4")

    testCompile("org.junit.jupiter:junit-jupiter-api:5.0.0-M4")
    testRuntime("org.junit.jupiter:junit-jupiter-engine:5.0.0-M4")

    // Enable use of the JUnitPlatform Runner within the IDE
    testCompile("org.junit.platform:junit-platform-runner:1.0.0-M4")
}

junitPlatform {
    details 'tree'
}

Consulte el formulario de documentación de JUnit para obtener más información al respecto.

simplemente agregando a la base de conocimientos, acabo de obtener lo siguiente para trabajar con gradle 4.7:

apply plugin: 'java'
repositories {
    jcenter()
}

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.1.1'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.1.1'
}

test {
    useJUnitPlatform()
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *