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: La JUnit 4 test a donné une belle "réussi" dans la sortie et un rapport html en build/reports/tests
.
Résultat réel: JUnit 5 test ci-dessous n'a pas de sortie à autre chose qu' (...) build succesful
, tandis que 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.
L'exécution gradle test --info
rendements en Skipping task ':testClasses' as it has no actions.
parmi beaucoup de je pense surtout que unrelevant de sortie.
Étonnamment, elle aussi, dit - Executing task ':test'
et Generating HTML test report... Finished generating test html results
et similaires pour le xml en 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 est en effet pas l'exécuter.
Ce que je pense aussi très intéressant, c'est qu' 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");
je pense que c'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
-
Gradle projet en cours d'exécution jUnit 5 tests dans IntelliJ
Mais comme vous pouvez le voir c'est pour les anciennes versions de l'Ide, et je suis déjà à l'aide de la syntaxe pour les IJ 2016.3.3 et plus selon l'une des réponses, dans le dans le un JUnit dépendance ligne, donc ça devrait être ok.
-
La mise à niveau de JUnit 4 à JUnit 5 dans intellij avec gradle
Liens retour à la question ci-dessus, et des liens vers ce Jetbrains blog qui utilise la même ligne que la question ci-dessus. Également des liens vers:
-
Intégrer JUnit 5 les résultats des tests avec Intellij rapport de test Celle-ci montre, dans la question, comme la dépendance aussi
testRuntime("org.junit.vintage:junit-vintage-engine:5.0.0-M1")
ce qui est expliqué dans Pourquoi JUnit Jupiter et JUnit Vintage séparés Quand j'ai l'Exécution de cas de test à l'Ide? Eh bien, quand je l'ai exécuté, le résultat a montré qu'il ne pouvait pas trouver cette version, mais selon le Référentiel Maven c'est un JUnit 5:
testRuntime("org.junit.vintage:junit-vintage-engine:4.12.0-M4")
Les réponses notez que vous pouvez simplement exécuter les tests au sein de l'Ide depuis les versions ultérieures ont JUnit 5 soutien. Je sais, et le test se passe bien quand je le lance à partir de l'intérieur de l'Ide. Mais je veux l'utiliser Gradle (et Travis, qui a besoin gestion de la dépendance).
-
Comment faire pour capturer la sortie standard stdout/stderr dans junit 5 gradle rapport de test?
J'ai essayé d'utiliser
testCompile("org.junit.platform:junit-platform-gradle-plugin:1.0.0-M3") testCompile("org.junit.jupiter:junit-jupiter-engine:5.0.0-M3")
mais les résultats n'ont pas changé.
Mon projet de modèle se trouve sur https://github.com/PHPirates/java-template-project mais cette question doit contenir toutes les informations nécessaires.