2011-12-17 2 views
1

Я пытаюсь запустить тест, написанный другим программистом с JUnit в eclipse-индиго, и он уверен, что он работает, но когда я пытаюсь Jmockit, есть сбой, и я не могу найти решение , все же.Jmockit NullPointerException with Junit

Я пытаюсь изменить jmockit.jar в classpath, но не работает. У вас есть представление об этой проблеме?

Редактировать: Когда я использую «ant test» в терминале, проблем нет, но если я нажму пробег как> Тест JUnit в моей среде IDE, я получил эту ошибку.

Exception in thread "(Attach Listener)" java.lang.reflect.InvocationTargetException 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:323) 
at sun.instrument.InstrumentationImpl.loadClassAndCallAgentmain(InstrumentationImpl.java:348) 
Caused by: java.lang.NullPointerException 
at mockit.internal.state.TestRun.getInstance(TestRun.java:40) 
at mockit.internal.state.TestRun.mockFixture(TestRun.java:111) 
at mockit.internal.ClassFile.createClassFileReader(ClassFile.java:33) 
at mockit.internal.annotations.AnnotatedMockMethodCollector.collectMockMethods(AnnotatedMockMethodCollector.java:39) 
at mockit.internal.RedefinitionEngine.<init>(RedefinitionEngine.java:86) 
at mockit.internal.RedefinitionEngine.<init>(RedefinitionEngine.java:110) 
at mockit.internal.startup.Startup.setUpInternalStartupMock(Startup.java:130) 
at mockit.internal.startup.Startup.loadInternalStartupMocksForJUnitIntegration(Startup.java:112) 
at mockit.internal.startup.Startup.initialize(Startup.java:79) 
at mockit.internal.startup.Startup.agentmain(Startup.java:69) 
... 6 more 
Agent failed to start! 
[WARN ][load ] agent library 'instrument' failed to init with result: 102 
java.lang.RuntimeException: com.sun.tools.attach.AgentInitializationException: Agent JAR loaded but agent failed to initialize 
at mockit.internal.startup.JDK6AgentLoader.loadAgentAndDetachFromThisVM(JDK6AgentLoader.java:130) 
at mockit.internal.startup.JDK6AgentLoader.loadAgent(JDK6AgentLoader.java:80) 
at mockit.internal.startup.AgentInitialization.initializeAccordingToJDKVersion(AgentInitialization.java:41) 
at mockit.internal.startup.Startup.initializeIfNeeded(Startup.java:244) 
at org.junit.runner.Runner.<clinit>(Runner.java:25) 
at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:13) 
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) 
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:30) 
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) 
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:32) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:41) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:31) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:455) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:684) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:391) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 
Caused by: com.sun.tools.attach.AgentInitializationException: Agent JAR loaded but agent failed to initialize 
at sun.tools.attach.HotSpotVirtualMachine.loadAgent(HotSpotVirtualMachine.java:122) 
at mockit.internal.startup.JDK6AgentLoader.loadAgentAndDetachFromThisVM(JDK6AgentLoader.java:123) 
at mockit.internal.startup.JDK6AgentLoader.loadAgent(JDK6AgentLoader.java:81) 
... 16 more 
java.lang.NoClassDefFoundError: org/junit/internal/runners/ErrorReportingRunner 
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:32) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:41) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:31) 
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) 
+0

Можете ли вы разместить код, пожалуйста? Предпочтительно что-то маленькое, которое все еще проявляет ошибку. –

+0

На самом деле, когда я использую «ant test» в терминале, проблем нет, но я запускаю как> JUnit test в своей IDE. Я получил эту ошибку. – afsinka

+0

Возможно, муравей устанавливает что-то дополнительное, которое не задано в конфигурации запуска eclipse для теста – oers

ответ

3

Как вы указали в своем комментарии, вы устанавливаете дополнительный аргумент для исполнения в муравье.
Попробуйте установить

-javaagent:libtest/jmockit.jar 

как аргумент VM (его второе входное поле на вкладке Arguments) в конфигурации запуска для вашего JUnit теста.

И убедитесь, что путь к классам такой же, как и в муравьином.

enter image description here

+0

Большое спасибо @oers, это работает! – afsinka

0

Если у вас есть почтовый файл распределения вокруг, это должно быть довольно легко просто отлаживать это и понять, почему это получение NPE. Просто добавьте исходное вложение в zip-файл.

+0

Спасибо за ответ, но на самом деле, когда я использую «ant test» в терминале, проблем нет, но я запускаю как> JUnit test в своей среде IDE. Я получил эту ошибку. – afsinka