Junit 当同时使用Spy和PowerMock时引发RuntimeException

Junit 当同时使用Spy和PowerMock时引发RuntimeException,junit,powermock,spy,Junit,Powermock,Spy,当我在JUnit测试用例中与PowerMock一起使用Spy注释时,它会引发RuntimeException,但当我与PowerMock一起使用Mock注释时,测试用例工作正常。 有人能就我的问题提出建议吗 这是我的密码 @RunWith(PowerMockRunner.class) @PrepareForTest({DBConnectionPool.class}) @PowerMockIgnore("javax.management.*") public class TestAbcContro

当我在JUnit测试用例中与PowerMock一起使用Spy注释时,它会引发RuntimeException,但当我与PowerMock一起使用Mock注释时,测试用例工作正常。 有人能就我的问题提出建议吗

这是我的密码

@RunWith(PowerMockRunner.class)
@PrepareForTest({DBConnectionPool.class})
@PowerMockIgnore("javax.management.*")
public class TestAbcController {

    private static final Logger logger = Logger.getLogger(TestAbcController .class.getName());

    public TestAbcController () {
    }

    @Spy
    private SampleDao mockDao;

    @InjectMocks
    private AbcController ctr;

    private BasicDataSource ds = null;

    private MockMvc mockMvc;

    @BeforeClass
    public static void setUpClass() {
        logger.setLevel(Level.INFO);
        PowerMockito.mockStatic(DBConnectionPool.class);
        PowerMockito.when(DBConnectionPool.getDataSource()).thenReturn(UnitTestDbConnection.getDataSource());
        }

 @Test
    public void testMain() {
   when(mockDao.getMap()).thenReturn(new HashMap());
}
下面是例外情况的详细信息

java.lang.RuntimeException:在上调用beforeTestMethod方法 PowerMock测试侦听器 org.powermock.api.extension.listener。AnnotationEnabler@d86a6f失败。 在 org.powermock.api.mockito.internal.configuration.PowerMockitoSpyAnnotationEngine.process(PowerMockitoSpyAnnotationEngine.java:53) 在 org.powermock.api.mockito.internal.configuration.PowerMockitoInjectingAnnotationEngine.process(PowerMockitoInjectingAnnotationEngine.java:32) 在 org.powermock.api.extension.listener.AnnotationEnabler.injectSpiesAndInjectToSetters(AnnotationEnabler.java:60) 在 org.powermock.api.extension.listener.AnnotationEnabler.beforeTestMethod(AnnotationEnabler.java:55) 在 org.powermock.tests.utils.impl.PowerMockTestNotifierImpl.notifyBeforeTestMethod(PowerMockTestNotifierImpl.java:90) 在 org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.java:292) 在 org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTestInSuper(PowerMockJUnit47RunnerDelegateImpl.java:127) 在 org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTest(PowerMockJUnit47RunnerDelegateImpl.java:82) 在 org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runbeforesthenTestthenAfter(PowerMockJUnit44RunnerDelegateImpl.java:282) 在 org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:87) 位于org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:50) 在 org.powermock.modules.junit4.internal.impl.powermockjunit44runnerdelegateinpl.invokeTestMethod(powermockjunit44runnerdelegateinpl.java:207) 在 org.powermock.modules.junit4.internal.impl.powermockjunit44runnerdelegateinpl.runMethods(powermockjunit44runnerdelegateinpl.java:146) 在 org.powermock.modules.junit4.internal.impl.powermockjunit44runnerdelegateinpl$1.run(powermockjunit44runnerdelegateinpl.java:120) 在 org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:34) 在 org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:44) 在 org.powermock.modules.junit4.internal.impl.powermockjunit44runnerdelegateinpl.run(powermockjunit44runnerdelegateinpl.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.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264) 在 org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153) 在 org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)


我在将mockito core升级到2.8.9和powermock升级到1.7.4之后修复了此问题。

我在将mockito core升级到2.8.9和powermock升级到1.7.4之后修复了此问题