При совместном использовании Spy и PowerMock выдает исключение RuntimeException

Когда я использую аннотацию Spy вместе с PowerMock в моем тестовом примере JUnit, она выдает исключение RuntimeException, но когда я использую аннотацию Mock вместе с PowerMock, тестовый пример работает нормально. Кто-нибудь может посоветовать мне мою проблему?

Это мой код

@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());
}

Ниже приводится подробное описание исключения.

Я исправил эту проблему после обновления mockito-core до 2.8.9 и powermock до 1.7.4.


person by lim    schedule 09.01.2020    source источник


Ответы (1)


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.PowerMockitoInjectingAnnotation. .api.extension.listener.AnnotationEnabler.injectSpiesAndInjectToSetters (AnnotationEnabler.java:60) по адресу org.powermock.api.extension.listener.AnnotationEnabler.beforeTestMethod (AnnotationEnabler.java:55mos.TestMethod (AnnotationEnabler.java:55mo )s. .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.runBeforesThenTestThenAfters (PowerMockJUnit44RunnerDelegateImpl.java:282) в org.junit.internal.runners.MethodRoadie.runTest (MethodRoadie.java:87) по адресу org.junit.internal.runners.MethodRoadie.run (MethodRoadie.java:50) по адресу org.powermock.modules.junimpl.internal. PowerMockJUnit44RunnerDelegateImpl.invokeTestMethod (PowerMockJUnit44RunnerDelegateImpl.java:207) в org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.runMethods (PowerMockJUnit44RunnerDelegateImpl.java:146) в org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl $ 1.run (PowerMockJUnit44RunnerDelegateImpl.java:120) в org.junit.internal.runners.ClassRoadie.runUnprotected (C lassRoadie.java:34) на org.junit.internal.runners.ClassRoadie.runProtected (ClassRoadie.java:44) на org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.JUnit44RunnerDelegateImpl2NerplUnit44RunnerDelegateImpl2Nerplun) (org.MockRunnerDelegateImpl.nerplun) (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.JUnider.junit4.JUnit3 в org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet (JUnit4Provider.java:153) в org.apache.maven.surefire.junit4.JUnit4Provider.invoke (JUnit4124ider.java)

person by lim    schedule 10.01.2020