web-dev-qa-db-fra.com

Eclipse Photon ne résout pas les importations dans les sources de test

Je suis passé à Eclipse Photon avec un espace de travail existant. J'ai quelques projets Maven dans cet espace de travail. Tous les projets ne comportaient aucune erreur dans Eclipse Oxygen. Après avoir ouvert mon espace de travail dans Eclipse Photon, toutes les classes de test qui importent org.mockito.Mockito, org.springframework.mock et org.springframework.test ont des erreurs. Ces importations ne peuvent pas être résolues bien qu'Eclipse en soit conscient car je peux sauter dans les classes.

Pourquoi Eclipse Photon ne peut-il pas résoudre ces importations? Et comment puis-je résoudre ce problème?

17
LuCio

S'il s'agit vraiment d'un projet maven et que vous utilisez la version 1.9 de m2e correspondante, il devrait configurer automatiquement le paramètre "Contient les sources de test" - et les paramètres associés correctement.

Vous devrez peut-être mettre à jour le chemin de classe du projet en cliquant avec le bouton droit sur le projet et en choisissant "Maven"> "Mettre à jour le projet"

15
Till Brychcy

Je l'ai résolu et je veux partager mes résultats.

Les propriétés du chemin de génération dans le photon Eclipse ont une nouvelle option dans l'onglet source: Contient des sources de test . Cette option a été définie sur Non pour le dossier myproject/src/test/Java. Lorsque j'ai essayé de le régler sur Oui j'ai eu l'erreur suivante:

Le dossier source 'src/testjava' dans le projet 'myproject' doit avoir un dossier de sortie qui n'est pas également utilisé pour les sources principales

L'erreur a été affichée bien que le dossier de sortie ait déjà été défini sur un chemin différent de celui de myproject/src/main/Java. Pour réinitialiser les paramètres, j'ai décoché l'option Autoriser les dossiers de sortie pour les dossiers source et redéfinir tous les dossiers de sortie. Après cela, j'ai pu définir l'option mentionnée sur Oui . À la suite de cela, les importations ont été résolues.

La raison est décrite ici (faites défiler vers le bas pour Sources de test ). Ça dit:

Pour chaque projet, la compilation se fait maintenant en deux phases: d'abord toutes les sources principales (qui ne peuvent voir aucun code de test sur le chemin de build), puis toutes les sources de test.

Puisque l'option n'a pas été définie pour le dossier source-test, elle a été compilée comme un dossier source-principal. Par conséquent, les importations de classes de test à partir de dépendances avec la portée test n'ont pas pu être résolues.

11
LuCio

Pour mon projet basé sur Maven, j'ai pu résoudre le problème en accédant au fichier .classpath du projet et en ajoutant un ...

<attribute name="test" value="true"/>

tag aux attributs, c'est-à-dire,

<classpathentry kind="src" output="target/test-classes" path="src/test/Java">
    <attributes>
        <attribute name="optional" value="true"/>
        <attribute name="maven.pomderived" value="true"/>
        <attribute name="test" value="true"/>
    </attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
    <attributes>
        <attribute name="maven.pomderived" value="true"/>
        <attribute name="test" value="true"/>
    </attributes>
</classpathentry>

J'espère que ça t'as aidé.

1
Al W