2 Stimmen

Jmockit NullPointerException mit Junit

Ich versuche, einen Test, der von einem anderen Programmierer mit JUnit in Eclipse-Indigo geschrieben wurde, auszuführen, und er ist sicher, dass er funktioniert, aber wenn ich JMockit ausprobiere, gibt es einen Fehler und ich kann noch keine Lösung finden.

Ich habe versucht, jmockit.jar im Klassenpfad zu ändern, aber es funktioniert nicht. Hast du eine Idee zu diesem Problem?

Bearbeitung: Wenn ich "ant test" im Terminal verwende, tritt kein Problem auf, aber wenn ich in meiner IDE auf "Run as > JUnit-Test" klicke, erhalte ich diesen Fehler.

Ausnahme im Thread "(Attach Listener)" java.lang.reflect.InvocationTargetException
bei sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
bei sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
bei sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
bei java.lang.reflect.Method.invoke(Method.java:597)
bei sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:323)
bei sun.instrument.InstrumentationImpl.loadClassAndCallAgentmain(InstrumentationImpl.java:348)
Verursacht durch: java.lang.NullPointerException
bei mockit.internal.state.TestRun.getInstance(TestRun.java:40)
bei mockit.internal.state.TestRun.mockFixture(TestRun.java:111)
bei mockit.internal.ClassFile.createClassFileReader(ClassFile.java:33)
bei mockit.internal.annotations.AnnotatedMockMethodCollector.collectMockMethods(AnnotatedMockMethodCollector.java:39)
bei mockit.internal.RedefinitionEngine.(RedefinitionEngine.java:86)
bei mockit.internal.RedefinitionEngine.(RedefinitionEngine.java:110)
bei mockit.internal.startup.Startup.setUpInternalStartupMock(Startup.java:130)
bei mockit.internal.startup.Startup.loadInternalStartupMocksForJUnitIntegration(Startup.java:112)
bei mockit.internal.startup.Startup.initialize(Startup.java:79)
bei mockit.internal.startup.Startup.agentmain(Startup.java:69)
... 6 more
Agent konnte nicht gestartet werden!
[WARN ][load   ] Agentbibliothek 'instrument' konnte nicht initialisiert werden, Ergebnis: 102
java.lang.RuntimeException: com.sun.tools.attach.AgentInitializationException: Agent-JAR wurde geladen, aber Agent konnte nicht initialisiert werden
bei mockit.internal.startup.JDK6AgentLoader.loadAgentAndDetachFromThisVM(JDK6AgentLoader.java:130)
bei mockit.internal.startup.JDK6AgentLoader.loadAgent(JDK6AgentLoader.java:80)
bei mockit.internal.startup.AgentInitialization.initializeAccordingToJDKVersion(AgentInitialization.java:41)
bei mockit.internal.startup.Startup.initializeIfNeeded(Startup.java:244)
bei org.junit.runner.Runner.(Runner.java:25)
bei org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:13)
bei org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
bei org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:30)
bei org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
bei org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24)
bei org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.(JUnit4TestReference.java:32)
bei org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.(JUnit4TestClassReference.java:25)
bei org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:41)
bei org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:31)
bei org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:455)
bei org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:684)
bei org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:391)
bei org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Verursacht durch: com.sun.tools.attach.AgentInitializationException: Agent-JAR wurde geladen, aber Agent konnte nicht initialisiert werden
bei sun.tools.attach.HotSpotVirtualMachine.loadAgent(HotSpotVirtualMachine.java:122)
bei mockit.internal.startup.JDK6AgentLoader.loadAgentAndDetachFromThisVM(JDK6AgentLoader.java:123)
bei mockit.internal.startup.JDK6AgentLoader.loadAgent(JDK6AgentLoader.java:81)
... 16 weitere
java.lang.NoClassDefFoundError: org/junit/internal/runners/ErrorReportingRunner
bei org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
bei org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24)
bei org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.(JUnit4TestReference.java:32)
bei org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.(JUnit4TestClassReference.java:25)
bei org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:41)
bei org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:31)
bei org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
bei org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
bei org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
bei org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

4voto

oers Punkte 18070

Wie Sie in Ihrem Kommentar angegeben haben, haben Sie ein zusätzliches Argument zur Ausführung in Ant festgelegt.
Versuchen Sie,

-javaagent:libtest/jmockit.jar

als VM-Argument (es ist das zweite Eingabefeld auf dem Tab "Argumente") in der Startkonfiguration für Ihren JUnit-Test einzustellen.

Und stellen Sie sicher, dass der Klassenpfad derselbe ist wie in Ant.

Bildbeschreibung hier eingeben

0voto

Francis Upton IV Punkte 19093

Wenn Sie die Zip-Datei der Verteilung zur Hand haben, sollte es ziemlich einfach sein, dies zu debuggen und zu sehen, warum es zu der NPE kommt. Fügen Sie einfach die Quellanlage als Zip-Datei hinzu.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X