Comment utiliser JUnit 5 avec Gradle?

Je suis en train d'utiliser JUnit 5 avec Gradle après j'ai réussi à l'exécution d'un test JUnit 4.

Résultat attendu: Lle JUnit 4 test a donné une belle "réussi" dans la sortie et d'un rapport html dans build/reports/tests.

Résultat réel: JUnit 5 test ci-dessous n'a pas de sortie à autre chose qu'à (...) build succesful, même si je sais que le test n'est pas fait exécuter, car il n'existe pas de test de la sortie du journal réussi/sauté/l'échec, et de mettre un fail dans le test continue la construction réussie.

De course gradle test --info rendements Skipping task ':testClasses' as it has no actions. parmi beaucoup de je pense surtout que unrelevant de sortie.
Étonnamment, il dit aussi Executing task ':test' et Generating HTML test report... Finished generating test html results et similaire pour les données xml dans build/test-results/test, tandis que le xml n'est pas généré, le html ne montre aucune exécution des tests et pas d'erreurs, et le test n'est en effet pas exécuter.

Ce que je pense aussi très intéressant, c'est que gradle test --debug rendements

[TestEventLogger] Gradle Test Run :test STARTED
[org.gradle.api.internal.tasks.testing.junit.JUnitDetector] test-class-
scan : failed to scan parent class java/lang/Object, could not find the class file
[TestEventLogger]
[TestEventLogger] Gradle Test Run :test PASSED

alors que mon seul test contient

fail("test fails");

qui je pense est très étrange!

Mon fichier de build est

apply plugin: 'java'

test {
    dependsOn 'cleanTest' //run tests every time

}

sourceSets {
    main {
        java {
            srcDirs 'src'
        }
    }
    test {
        java {
            srcDirs 'test'
        }
    }
}

repositories {
    mavenCentral()
}

dependencies {
    //when using this, it worked with a junit 4 test
//   testCompile 'junit:junit:4.10'
    //this should be needed for junit 5 (using M4 is required since IJ 2017.1.2
    testCompile("org.junit.jupiter:junit-jupiter-api:5.0.0-M4")
}

test {
    testLogging {
        events "passed", "skipped", "failed"
    }
}

Mon test est

package mypackage;

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;

public class HelloWorldTest {
    @Test
    public void testHelloWorld(){
        assertEquals(2, 1+1, "message");
    }
}

Ma structure de dossier, à l'aide de paquet mypackage,

java-template-project
--- src
    --- mypackage
        --- HelloWorld.java
--- test
    --- mypackage
        --- HelloWorldTest.java

et dans IntelliJ 2017.1.3, dont je suis l'aide, la structure du module ressemble à ceci

java-template-project
--- java-template-project_main
    --- src/mypackage
        --- HelloWorld(.java)
--- java-template-project_test
    --- test/mypackage
        --- HelloWorldTest(.java)

parce que Gradle de nos jours veut la source et de tests dans leur propre paquet.

Ce que j'ai essayé

Évidemment, ce n'est pas la première question à ce sujet, toutes les questions que j'ai trouvé sont

  • Eu le même problème. Découvert que @Test doit être importé à partir de 'org.junit.jupiter.api' (Junit5 @Test) au lieu de org.junit (Junit4 @Test)
InformationsquelleAutor PHPirate | 2017-06-08