2013-03-26 13 views
7

Guiceを使用していくつかの設定を行う統合テストがあります。私はMockitoを使っていくつかの依存関係を模倣しています。これまで私にとってはうまくいきました。 PowerMockを他の依存関係に使う必要がありました。私は、これはMockitoの既知のバグであることについては何も見つけることができませんでしたモックオブジェクトを作成するときにMockitoがNullPointerをスローする

@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. 
    } 
} 

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 

(トリムダウン)コード:独自のクラスのいずれかのロード中に今MockitoはNullPointerExceptionを投げています。誰かがこれを解決する方法の提案を持っていますか?

答えて

6

チェックthis issue

これはモックはinstantation時に作成されたときに起こるようです。

@Beforeメソッドでモックを設定すると、問題は解決します。

+0

私はいくつかのコードを '@ BeforeClass'から' @ Before'に移動しましたので、少し遅れて呼び出されます。元の問題は消えてしまいましたが、私は今、他のエラーに遭遇しています:http://code.google.com/p/powermock/issues/detail?id=277 – Jorn

+0

Haventこれを見ました。しかし、リンクごとに、この問題は解決されるはずです。 - [@PowerMockIgnore( "javax.management。*")]はそれを解決します – rajesh

関連する問題