J'écris un test d'intégration sur un RestController dans SpringBoot. Normalement, je voudrais courir avec SpringRunner.class, mais quand il s'agit de Mock une méthode statique, j'ai besoin d'utiliser PowerMock. Le fait étrange est que lorsque j'exécute les tests individuels, ils passent individuellement (mais renvoient des messages d'erreur), quand j'essaie d'exécuter toute la classe de test, aucun test ne passe et il renvoie le même message d'erreur.Démarrage de méthodes statiques de démarrage avec PowerMock dans le test d'intégration
@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);
}
}
Si je lance le test ou toute la classe je reçois une erreur de ce type:
Exception dans le thread "principal" java.lang.NoSuchMethodError: org.powermock.core.MockRepository.addAfterMethodRunner (Ljava/lang/Runnable;) à org.powermock.api.mockito.internal.mockcreation.MockCreator.mock (MockCreator.java:50)
Si je décommenter @PowerMockRunnerDelegate (SpringRunner.class) là, il vient cette autre erreur :
Exception dans le fil "principal" java.l ang.NoClassDefFoundError: org/powermock/core/testlisteners/GlobalNotificationBuildSupport $ Callback à org.powermock.modules.junit4.internal.impl.DelegatingPowerMockRunner.run (DelegatingPowerMockRunner.java:139)
Merci, mais il donne toujours la même erreur –
Utilisez-vous encore '@SpringBootTest (classes = SpringBootJwtApplication.class)'? Je n'ai pas eu d'exception quand je ne l'utilise pas. –
J'ai essayé avec et sans ... J'ai utilisé toutes les instructions que vous m'avez données. La chose étrange est que chaque test fonctionne, la classe entière non. –