При использовании Spy и PowerMock вместе выдает RuntimeException - PullRequest
0 голосов
/ 09 января 2020

Когда я использую аннотацию 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());
}

Ниже подробно исключение

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. в org.powermock.api.extension.listener.AnnotationEnabler.injectSpiesAndInjectToSetters (AnnotationEnabler. java: 60) в org.powermock.api.extension.listener.AnnotationEnabler.beforeTestMethod (объект аннотации) *. (. PowerMockTestNotifierImpl java: 90) .tests.utils.impl.PowerMockTestNotifierImpl.notifyBeforeTestMethod в 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.powermounmo4. internal.impl.PowerMockJUnit47RunnerDelegateImpl $ PowerMockJUnit47MethodRunner.executeTest (PowerMockJUnit47RunnerDelegateImpl java:. 82) на org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl $ PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters (. PowerMockJUnit44RunnerDelegateImpl java: 282) в org.junit. internal.runners.MethodRoad ie .runTest (MethodRoad ie. java: 87) в org.junit.internal.runners.MethodRoad ie .run (MethodRoad ie. java: 50) в org.powermock.modules.junit4.internal.impl.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.ClassRoad * 10 *. 34) в орг.юнь it.internal.runners.ClassRoad ie .runProtected (ClassRoad ie. java: 44) в org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run (PowerMockJUleegnatener): org.powermock.modules.junit4.common.internal.impl. : 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) в орг. 1010 *

1 Ответ

0 голосов
/ 10 января 2020

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

...