2013-03-26 35 views
7

Tôi có một thử nghiệm tích hợp trong đó một số thiết lập được thực hiện bằng cách sử dụng Guice. Tôi đang sử dụng Mockito để chế nhạo một số phụ thuộc. Điều này đã làm việc tốt cho tôi cho đến bây giờ. Tôi cần sử dụng PowerMock cho một số phụ thuộc khác. Bây giờ Mockito là ném một NullPointerException khi tải một trong các lớp học riêng của mình:Mockito ném NullPointer khi tạo đối tượng giả

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 

sự (tỉa xuống) mã:

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

tôi không thể tìm thấy bất cứ điều gì về vấn đề này là một lỗi được biết đến trong Mockito. Có ai có một gợi ý về cách giải quyết này?

Trả lời

6

Kiểm tra this issue

Điều này dường như xảy ra khi một mô hình được tạo ra vào thời điểm instantation.

Nếu tôi thiết lập mocks của mình bằng phương pháp @Trước khi vấn đề biến mất.

+0

Tôi đã chuyển một số mã từ '@ BeforeClass' sang' @ Before', vì vậy nó được gọi sau một thời gian ngắn. Các vấn đề ban đầu sau đó biến mất, nhưng tôi bây giờ chạy vào các lỗi khác, trong số những người khác này: http://code.google.com/p/powermock/issues/detail?id=277 – Jorn

+0

Havent nhìn thấy điều này. Nhưng theo liên kết, điều này sẽ giải quyết - '[@PowerMockIgnore (" javax.management. * ")] Giải quyết nó' – rajesh

Các vấn đề liên quan