Mockito demande d'ajouter @PrepareForTest à la classe même après avoir ajouté @PrepareForTest
J'ai le code simple suivant. J'ai une classe (TestClass) et je veux tester "someMethod". Il est une méthode statique qui est appelée par mon "someMethod".
Je veux Powermock que la méthode statique de me rendre quelque objet fictif.
J'ai l' @PrepareForTest(ExternalClass.class) au début, mais quand je l'execute il donne l'erreur:
La classe ExternalClass pas prêt pour le test.
Pour préparer cette catégorie, ajouter une classe à l' '@PrepareForTest'
annotation.
Dans le cas où si vous n'utilisez pas cette annotation, ajouter l'annotation à la classe ou au niveau de la méthode.
S'il vous plaît aidez-moi de souligner quel est le problème avec la façon dont j'ai utilisé @PrepareForTest
@RunWith(PowerMockRunner.class)
@PrepareForTest(ExternalClass.class)
public class xyzTest {
@Mock
private RestTemplate restTemplate;
@Mock
private TestClass testClass;
@BeforeClass
private void setUpBeforeClass() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testSuccessCase() {
Boolean mockResponse = true;
ResponseEntity<Boolean> response = new ResponseEntity<Boolean>(mockResponse, HttpStatus.OK);
SomeClass someClass = new SomeClass("test", "1.0.0", "someUrl", "someMetaData");
PowerMockito.mockStatic(ExternalClass.class);
Mockito.when(restTemplate.postForEntity(any(String.class), any(String.class), eq(Boolean.class))).thenReturn(response);
Mockito.when(ExternalClass.getSomeClass(any(String.class))).thenReturn(someClass);
Boolean result = testClass.someMethod("test");
Assert.isTrue(result);
Mockito.verify(restTemplate, times(1)).postForObject(any(String.class), any(String.class), any());
}
}
source d'informationauteur ViV
Vous devez vous connecter pour publier un commentaire.
Assurez-vous d'ajouter
@RunWith(PowerMockRunner.class)
vers le haut de votre classe.J'ai eu la même erreur, résolu par l'ajout de
à l'intérieur de la classe de test.
Comme avec la dernière réponse, mon problème est aussi le mélange du Test d'annotation à partir d'TestNG au lieu de Test Junit.
Très abscons d'erreur et j'ai passé plus de 5 heures de débogage 🙁
J'ai eu la même erreur, mais résolu. Mon problème est que j'ai inclus
powermock-module-junit4
mais inclus mon test d'annotation à partir d'TestNG au lieu de Junit.Pour ceux qui essaient de le faire fonctionner avec Junit 5, Si votre utilisation de la
powermock-module-junit4
version bêta qui prétend être compatible avec 4+, la bibliothèque ne sont pas encore reconnaître:et qu'il va jeter un:
quand
@PrepareForTest
est appliqué sur le nom de la classe statique de la maquette. Si vous souhaitez utiliser PowerMock, vous aurez à revenir à Junit 4 ou créer un MockWrapper pour votre méthode statique en ce moment.PowerMock 2.0: Github Feuille De Route