2009-05-13 32 views
6

Il faut espérer une question facile ici pour quelqu'un .....Debugger ne fonctionnera pas avec JMockit

J'utilise RAD 7.5.2, et je l'écriture de tests Junit. Je les écrivais très bien avec JUnit 3, et ensuite je voulais simuler certains appels de fonction. J'ai donc chargé jmockit 0.9.7 et Junit 4.6. J'ajoute aussi -javaagent: jmockit.jar comme argument VM.

Lorsque je "Exécute en tant que test Junit", il n'y a aucun problème (au moins, aucun que je peux voir sur la sortie). La sortie de Junit est bonne, et aucune erreur n'est déversée sur la console.

Lorsque je "débogue en tant que test Junit", cela ne fonctionnera pas. Il me déverse sur dans:

InstrumentationImpl.class -> Source non trouvé

... et quand je frappe continuer ....

NativeMethodAccessorImpl.class -> Source non trouvé

... et quand je clique sur Continuer ...

Le JUnit se termine après cela. Il déverse les éléments suivants à la console:


Exception dans le thread "principal" java.lang.reflect.InvocationTargetException à sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) à sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:79) à sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) à java.lang.reflect.Method.invoke (Method.java:618) à sun.instrument.InstrumentationImpl.loadClassAndCallPremain (InstrumentationImpl.java:160) Causé par: java.lang.UnsatisfiedLinkError: sun/instrument/InstrumentationImpl.redefineClasses0 ([Ljava/lang/instrument/définition de classe;) V à sun.instrument.InstrumentationImpl.redefineClasses (InstrumentationImpl.java:98) à mockit.internal.RedefinitionEngine.redefineMethods (RedefinitionEngine.java:197) à mockit.internal.RedefinitionEngine.redefineMethods (RedefinitionEngine.java:184) à mockit.internal.RedefinitionEngine.redefineMethods (RedefinitionEngine.java:116) à mockit.internal.RedefinitionEngine.setUpInternalStartupMock (RedefinitionEngine.java:53) à mockit.internal.Startup.loadInternalStartupMocks (démarrage. java: 123) à mockit.internal.Startup.initialize (Startup.java:110) à mockit.internal.Startup.premain (Startup.java:97) ... 5 plus

Erreur fatale: le traitement des -javaagent n'a pas


je peux courir à la fois JUnit 3 et 4 JUnit sur mes tests sans problème, il est quand j'utilise le -javaagent: jmockit.jar (avec le débogueur; par eux-mêmes, ils vont bien) que les choses deviennent moche, et je dois le faire pour utiliser les trucs jmockit.

Pensées?

+0

J'ai eu un autre problème, que le binaire ne correspond pas en fait avec le code source. – zinking

Répondre

1

Je lance régulièrement des tests JUnit qui utilisent JMockit (avec et sans l'argument JVM "-javaagent") en mode débogage, et je n'ai jamais rencontré de problèmes.Etes-vous sûr que le chemin de classe de la configuration "Debug as Junit Test" est identique à celui de "Run As Junit Test"? Comme vous avez une UnsatisfiedLinkError, il se peut qu'il manque un fichier jar.

Si ce n'est pas la cause de l'erreur, alors peut-être il est quelque chose de spécifique à RAD 7.5.2 ...

+0

Cela se passe aussi avec RAD 7.5.5; mêmes symptômes que Jacob décrit. – Greg