Veuillez lire la mise à jour ci-dessous.
Des problèmes similaires décrits par JustACluelessNewbie se produisent dans IntelliJ IDEA. Le problème est que la dépendance testCompile project(':core').sourceSets.test.output
signifie en fait: "dépend des classes générées par la tâche de construction gradle". Donc, si vous ouvrez un projet propre où les classes ne sont pas encore générées, IDEA ne les reconnaîtra pas et signale une erreur.
Pour résoudre ce problème, vous devez ajouter une dépendance sur les fichiers source de test à côté de la dépendance sur les classes compilées.
// First dependency is for IDEA
testCompileOnly files { project(':core').sourceSets.test.java.srcDirs }
// Second is for Gradle
testCompile project(':core').sourceSets.test.output
Vous pouvez observer les dépendances reconnues par IDEA dans Paramètres du module -> Dépendances (champ de test) .
Btw. ce n'est pas une bonne solution, donc la refactorisation vaut la peine d'être envisagée. Gradle lui-même a un sous-projet spécial contenant uniquement des classes de support de test. Voir https://docs.gradle.org/current/userguide/test_kit.html
Mise à jour 05/06/2016
Plus Je pense à la solution proposée moins je l'aime. Il y a peu de problèmes avec cela:
- Il crée deux dépendances dans IDEA. L'un pointe vers les sources de test, l'autre vers les classes compilées. Et il est crucial dans quel ordre ces dépendances sont reconnues par IDEA. Vous pouvez jouer avec en changeant l'ordre des dépendances dans les paramètres du module -> onglet Dépendances.
- En déclarant ces dépendances, vous polluez inutilement la structure de dépendances.
Alors, quelle est la meilleure solution? À mon avis, il s'agit de créer un nouvel ensemble de sources personnalisé et d'y mettre des classes partagées. En fait, les auteurs du projet Gradle l'ont fait en créant un ensemble de sources testFixtures.
Pour ce faire, il vous suffit de:
- Créez un ensemble de sources et ajoutez les configurations nécessaires. Vérifiez ce plugin de script utilisé dans le projet Gradle: https://github.com/gradle/gradle/blob/v4.0.0/gradle/testFixtures.gradle
Déclarez la dépendance appropriée dans le projet dépendant:
dependencies {
testCompile project(path: ':module-with-shared-classes', configuration: 'testFixturesUsageCompile')
}
- Importez le projet Gradle dans IDEA et utilisez l'option "Créer un module séparé par ensemble de sources" lors de l'importation.