web-dev-qa-db-fra.com

Comment exécuter des tests JUnit avec Gradle?

Actuellement, j'ai le fichier build.gradle suivant:

apply plugin: 'Java'

sourceSets {
    main {
        Java {
            srcDir 'src/model'
        }
    }
}

dependencies {
    compile files('libs/mnist-tools.jar', 'libs/gson-2.2.4.jar')
    runtime fileTree(dir: 'libs', include: '*.jar')
}    


Ce build.gradle fichier est destiné à mon référentiel here . Tous mes fichiers principaux sont dans src/model / et leurs tests respectifs sont dans test/model.

Comment ajouter un JUnit 4 dépendance correctement, puis exécuter ces tests dans les dossiers de tests/model?

84
Q Liu

Comment ajouter une dépendance junit 4 correctement?

En supposant que vous résolviez par rapport à un dépôt standard Maven (ou équivalent):

dependencies {
    ...
    testCompile "junit:junit:4.11"  // Or whatever version
}

Exécutez ces tests dans les dossiers de tests/model?

Vous définissez votre source de test de la même manière:

sourceSets {
    ...

    test {
        Java {
            srcDirs = ["test/model"]  // Note @Peter's comment below
        }
    }
}

Puis appelez les tests en tant que:

./gradlew test

EDIT: Si vous utilisez plutôt JUnit 5, il y a encore plusieurs étapes à suivre, vous devez suivre ce tutoriel .

88
Oliver Charlesworth

Si vous configurez votre projet avec la structure de package Gradle par défaut, c'est-à-dire:

src/main/Java
src/main/resources
src/test/Java
src/test/resources

vous n'aurez alors pas besoin de modifier sourceSets pour exécuter vos tests. Gradle découvrira que vos classes et ressources de test sont en src/test. Vous pouvez ensuite courir comme Oliver dit ci-dessus. Une chose à noter: soyez prudent lors de la définition des fichiers de propriétés et de l’exécution de vos classes de test avec Gradle et votre IDE. J'utilise Eclipse et lors de l'exécution de JUnit à partir de celui-ci, Eclipse choisit un chemin de classe (le répertoire bin), tandis que gradle en choisit un autre (le répertoire de construction). Cela peut prêter à confusion si vous modifiez un fichier de ressources et que votre modification ne soit pas reflétée lors de l'exécution du test.

43
DivDiff

Si vous avez créé votre projet avec Spring Initializr , tout doit être configuré correctement et il ne vous reste plus qu'à exécuter ...

./gradlew clean test --info
  • Supprimez --info si vous ne voulez pas voir la sortie du test.
  • Supprimez clean si vous ne souhaitez pas réexécuter les tests déjà passés depuis le dernier changement.

Dépendances requises dans build.gradle pour les tests dans Spring Boot ...

dependencies {
    compile('org.springframework.boot:spring-boot-starter')
    testCompile('org.springframework.boot:spring-boot-starter-test')
}

Pour une raison quelconque, le testeur ne vous dit pas cela, mais il génère un rapport HTML dans build/reports/tests/test/index.html.

11
nobar