J'essaye de lancer ce test:
@Mock IRoutingObjHttpClient routingClientMock;
@Mock IRoutingResponseRepository routingResponseRepositoryMock;
@Test
public void testSendRoutingRequest() throws Exception {
CompleteRoutingResponse completeRoutingResponse = new CompleteRoutingResponse();
completeRoutingResponse.regression_latencyMillis = 500L;
Mockito.when(routingClientMock.sendRoutingRequest(any(RoutingRequest.class))).thenReturn(completeRoutingResponse);
RoutingObjHttpClientWithReRun routingObjHttpClientWithReRun = new RoutingObjHttpClientWithReRun
(routingClientMock, routingResponseRepositoryMock);
...
}
mais j'obtiens NullPointerException pour:
Mockito.when(routingClientMock.
qu'est-ce que je rate?
Lorsque vous souhaitez utiliser l'annotation @Mock
, vous devez utiliser la variable MockitoJUnitRunner
@RunWith(MockitoJUnitRunner.class)
public class MockitoTest {
@Mock
private IRoutingObjHttpClient routingClientMock;
@Test
public void testSendRoutingRequest() throws Exception {
// ...
}
}
Voir aussi ce tutoriel .
Vous avez trois options pour activer l'annotation @Mock
. IMHO en utilisant MockitoRule
est le meilleur, car il vous permet de choisir un autre coureur comme par exemple. Parameterized
.
Utilisez le MockitoRule
public class MockitoTest {
@Mock
private IRoutingObjHttpClient routingClientMock;
@Rule
public MockitoRule rule = MockitoJUnit.rule();
@Test
public void testSendRoutingRequest() throws Exception {
// ...
}
}
Utilisez le MockitoJUnitRunner
@RunWith(MockitoJUnitRunner.class)
public class MockitoTest {
@Mock
private IRoutingObjHttpClient routingClientMock;
@Test
public void testSendRoutingRequest() throws Exception {
// ...
}
}
Appelez MockitoAnnotations.initMocks (this) explicitement. Cela peut être fait dans la méthode qn @Before
, dans votre propre coureur ou dans une propre règle.
public class MockitoTest {
@Mock
private IRoutingObjHttpClient routingClientMock;
@Before
public void createMocks() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testSendRoutingRequest() throws Exception {
// ...
}
}
Il peut également s'agir d'un problème d'importation, alors assurez-vous de disposer du package importé approprié.
Par exemple, le package "org.easymock" comporte également une annotation appelée @Mock, qui ne fonctionnera bien entendu pas avec la configuration spécifique à Mockito.
Essayez de vérifier si la méthode que vous appelez est une méthode final ou non.
Mockito ne peut pas se moquer de la méthode finale. https://github.com/mockito/mockito/wiki/FAQ
@RunWith(SpringJUnit4ClassRunner.class)
dans votre classeMockitoAnnotations.initMocks(this);
dans la méthode @BeforeSi vous utilisez junit.jupiter
avec @ExtendWith(MockitoExtension.class)
pour la classe de test mais les mock sont null , assurez-vous que l'annotation @Test
est importée
import org.junit.jupiter.api.Test;
au lieu de org.junit.Test;