在使用 arg 构造函数模拟时获取"异常初始化器错误"



我使用Junit4测试外部java类。我想模拟下面这行代码

MySearch mySearch = MyCache.getData(new MyAlgorithm(keyword.trim()), MySearch.class);

我试过了

@RunWith(PowerMockRunner.class)
@PrepareForTest({MyCache.class, MyAlgorithm.class})
public class Test {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
PowerMockito.mockStatic(MyCache.class);
MyAlgorithm alg = Mockito.mock(MyAlgorithm.class);
PowerMockito.whenNew(MyAlgorithm.class).withArguments("ABC").thenReturn(alg);
MySearch mySearch = Mockito.mock(MySearch.class);
PowerMockito.when(MyCache.getData(alg,MySearch.class)).thenReturn(mySearch);
//...
}

}

但我仍然得到这个错误">java.lang.ExceptionInInitializerError">


java.lang.ExceptionInInitializerError在sun.reflect.GeneratedSerializationConstructorAccessor6。newInstance(未知源)java.lang.reflect.Constructor.newInstance (Constructor.java: 423)org.objenesis.instantiator.sun.SunReflectionFactoryInstantiator.newInstance (SunReflectionFactoryInstantiator.java: 45)org.objenesis.ObjenesisBase.newInstance (ObjenesisBase.java: 73)在org.mockito.internal.creation.instance.ObjenesisInstantiator.newInstance (ObjenesisInstantiator.java: 14)org.powermock.api.mockito.repackaged.ClassImposterizer.createProxy (ClassImposterizer.java: 143)org.powermock.api.mockito.repackaged.ClassImposterizer.imposterise (ClassImposterizer.java: 58)org.powermock.api.mockito.internal.mockcreation.MockCreator.createMethodInvocationControl (MockCreator.java: 111)org.powermock.api.mockito.internal.mockcreation.MockCreator.mock (MockCreator.java: 59)org.powermock.api.mockito.PowerMockito.mockStatic (PowerMockito.java: 70)在sun.reflect.NativeMethodAccessorImpl。invoke0(本地方法)sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java: 62)sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java: 43)java.lang.reflect.Method.invoke (Method.java: 498)在org.junit.internal.runners.ClassRoadie.runBefores (ClassRoadie.java: 57)org.junit.internal.runners.ClassRoadie.runProtected (ClassRoadie.java: 44)org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run (PowerMockJUnit44RunnerDelegateImpl.java: 122)org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run (JUnit4TestSuiteChunkerImpl.java: 106)在org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run (AbstractCommonPowerMockRunner.java: 53)org.powermock.modules.junit4.PowerMockRunner.run (PowerMockRunner.java: 59)org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run (JUnit4TestReference.java: 93)org.eclipse.jdt.internal.junit.runner.TestExecution.run (TestExecution.java: 40)org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests (RemoteTestRunner.java: 529)org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests (RemoteTestRunner.java: 756)org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run (RemoteTestRunner.java: 452)org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main (RemoteTestRunner.java: 210)

确保您至少有一个测试方法。比如:

@org.junit.Test
public void testMethod() {
}

最新更新