2013-03-26 4 views
7

Ho un test di integrazione in cui alcune impostazioni vengono eseguite utilizzando Guice. Sto usando Mockito per deridere alcune delle dipendenze. Questo ha funzionato bene per me fino ad ora. Avevo bisogno di usare PowerMock per qualche altra dipendenza. Ora Mockito sta gettando un NullPointerException durante il caricamento di una delle sue proprie classi:Mockito lancia NullPointer durante la creazione di un oggetto fittizio

java.lang.ExceptionInInitializerError 
    at org.mockito.internal.exceptions.stacktrace.ConditionalStackTraceFilter.<init>(ConditionalStackTraceFilter.java:17) 
    at org.mockito.exceptions.base.MockitoException.filterStackTrace(MockitoException.java:30) 
    at org.mockito.exceptions.base.MockitoException.<init>(MockitoException.java:19) 
    at org.mockito.exceptions.misusing.MockitoConfigurationException.<init>(MockitoConfigurationException.java:18) 
    at org.mockito.internal.configuration.ClassPathLoader.loadImplementations(ClassPathLoader.java:145) 
    at org.mockito.internal.configuration.ClassPathLoader.findPluginImplementation(ClassPathLoader.java:110) 
    at org.mockito.internal.configuration.ClassPathLoader.findPlatformMockMaker(ClassPathLoader.java:106) 
    at org.mockito.internal.configuration.ClassPathLoader.<clinit>(ClassPathLoader.java:59) 
    at org.mockito.internal.util.MockUtil.<clinit>(MockUtil.java:21) 
    at org.mockito.internal.MockitoCore.<init>(MockitoCore.java:40) 
    at org.mockito.Mockito.<clinit>(Mockito.java:932) 
    <snip my test code and some Guice> 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:601) 
    at org.junit.internal.runners.ClassRoadie.runBefores(ClassRoadie.java:56) 
    at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:43) 
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run(PowerMockJUnit44RunnerDelegateImpl.java:120) 
    at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:101) 
    at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:53) 
    at org.powermock.modules.junit4.PowerMockRunner.run(PowerMockRunner.java:53) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) 
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) 
    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) 

Caused by: java.lang.NullPointerException 
    at org.mockito.internal.exceptions.stacktrace.StackTraceFilter.<clinit>(StackTraceFilter.java:21) 
    ... 39 more 

il codice (tagliato verso il basso):

@PrepareForTest(MyModule.class) 
@RunWith(PowerMockRunner.class) 
public class MyTest { 
    @BeforeClass 
    public static void setUp() { 
     Injector injector = Guice.createInjector(...); 
     MyModule module = PowerMockito.mock(MyModule.class); 
     injector = injector.createChildInjector(...); // Fails in another Mockito.mock() call before it gets to use the mocked Module. 
    } 
} 

non riuscivo a trovare nulla su questo essere un bug noto in Mockito. Qualcuno ha un suggerimento su come risolvere questo?

risposta

6

check this issue

Questo sembra accadere quando un finto viene creata al momento instantation.

Se ho impostato i miei mock in un metodo @Before, il problema scompare.

+0

Ho spostato del codice da '@ BeforeClass' a' @ Before', quindi viene chiamato un po 'più tardi. Il problema originale poi scompare, ma ora sto riscontrando altri errori, tra cui questo: http://code.google.com/p/powermock/issues/detail?id=277 – Jorn

+0

Visto questo. Ma come per il collegamento, questo dovrebbe risolvere - '[@PowerMockIgnore (" javax.management. * ")] Lo risolve' – rajesh