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