我在SpringBoot中的RestController上編寫集成測試。 通常我會用SpringRunner.class運行,但是當涉及到模擬靜態方法時,我需要使用PowerMock。春季啓動嘲笑集成測試中PowerMock的靜態方法
奇怪的事實是,當我運行一個測試,它們分別通過(但返回錯誤消息),當我嘗試運行整個測試類,沒有測試通過並返回相同的錯誤消息。
@RunWith(PowerMockRunner.class)
@PrepareForTest({JwtUtils.class})
//@PowerMockRunnerDelegate(SpringRunner.class) THIS DOESN'T WORK!!!
@SpringBootTest(classes = SpringBootJwtApplication.class)
public class RestAccessIntegrationTest {
@Autowired @InjectMocks
RestController restController;
@Mock
HttpServletRequest request;
@Test
public void operationsPerAccountWhenSuccessfulTest(){
mockStatic(JwtUtils.class);
when(JwtUtils.myMethod(request)).thenReturn("blabla");
String expected = ... ;
String actual = restController.getOperations();
assertEquals(actual, expected);
}
}
如果運行測試或整個班級我得到這個類型的錯誤:
異常線程「main」 java.lang.NoSuchMethodError:org.powermock.core.MockRepository.addAfterMethodRunner( Ljava /朗/ Runnable接口;)在org.powermock.api.mockito.internal.mockcreation.MockCreator.mock(MockCreator.java:50)
如果我取消@PowerMockRunnerDelegate(SpringRunner.class)有說到這個其他錯誤:
線程「主」java.l中的異常ang.NoClassDefFoundError:組織/ powermock /核心/ testlisteners/GlobalNotificationBuildSupport $回調 在org.powermock.modules.junit4.internal.impl.DelegatingPowerMockRunner.run(DelegatingPowerMockRunner.java:139)
謝謝你,但它仍然給 –
你還在使用'@SpringBootTest(類= SpringBootJwtApplication.class)'同樣的錯誤?當我不使用它時,我沒有得到任何異常。 –
我試過了,沒有...我已經使用了你給我的所有指示。奇怪的是每個單獨的測試都有效,而整個課程都不是。 –