2011-01-14 2 views
3

J'ai un projet multi-module maven. Les technologies que j'utilise sont Spring et Struts. J'ai créé cas de test et l'exécuter comme:Impossible de voir les modifications dans le fichier .java lors de l'exécution de Junit avec Eclipse avant l'installation de mvn

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = { "classpath:applicationContextSimpleTest.xml" }) 
public class CurrencySpeakerTest 

Tout va bien ... jusqu'à ce que je fais quelques changements dans la source ... Je ne peux pas les voir jusqu'à ce que je lance mvn install sur le projet parent. Qu'est-ce qui ne va pas? J'ai essayé de regarder dans la configuration de débogage mais je ne peux pas trouver l'endroit où il a regardé sur la source de compilation au lieu des dossiers .java ... Je pense que c'est la raison pour laquelle junit exécute les fichiers .class au lieu du vrai ... a une idée à ce sujet?


J'ai 3 modules d'application ... ils sont construits avec le module parent. Le module parent est également le projet importé dans eclipse. Je fais les changements dans l'un des trois modules dans le dossier de test. J'appuie sur refresh et je nettoie/construit manuellement le projet eclipse (si je l'active automatiquement, je ne changerai rien). Je cours le test en tant que JUnit avec la boîte de dialogue d'éclipse. Eclipse semble ne pas voir les changements dans le fichier de test édité (.java).

Peut-être que cela a quelque chose à voir avec le projet principal qui inclut les autres modules? Ce qui est étrange, c'est que ... si j'édite d'autres classes qui ne sont pas dans le dossier de test et que j'exécute l'application web avec le plugin tomcat, Eclipse voit les changements là? J'utilise mvn clean et mvn install mais ce n'est pas le problème. J'utilise Eclipse pour exécuter le test, mais le débogueur Eclipse ne peut pas voir les changements dans le code ... par exemple si j'ajoute System.out.println() quelque part et y place le point d'arrêt, j'exécute le test et Eclipse ne s'arrête pas là car il ressemble en quelque sorte à l'ancien code (j'assume le fichier .class) ... ou si je supprime la ligne, édite des String ... rien ... il semble pointer sur le .class ... pourquoi est-ce? Actualiser et nettoyer/construire le projet éclipse ne fonctionne pas.

+0

Pourriez-vous être un peu plus précis. Où apportez-vous les changements (dans quel projet/module) et où ne les voyez-vous pas? – gabuzo

+0

Regardez dans le menu sous 'Project', avez-vous' Project> Build Automatically' activé? Sinon, essayez-le. – Nishant

Répondre

0

vous devrez peut-être exécuter un premier nettoyage

mvn clean compile 

-vous l'édition de fichiers java en dehors de l'éclipse? Si oui, vous devrez peut-être appuyer sur f5 pour l'actualiser. (Normalement, il devrait détecter les changements)

Sinon, utilisez-vous l'option de compilation automatique dans eclipse?

2

Lorsque je supprime la cible de mon module où j'écris le test, j'ai une exception ci-dessous. Ce qui rend ma théorie vraie que l'éclipse regarde dans le code compilé et ne peut pas voir la source ... Pourquoi est-ce?

Class not found pl.erif.utils.CurrencySpeakerTest java.lang.ClassNotFoundException: pl.erif.utils.CurrencySpeakerTest at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:693) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:429) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

Questions connexes