Limites lors de tests JUnit
Hello je suis confronté a une limitation lors d'un test JUnit.
Je souhaite tester une methode "addXXX" d'une classe qui s'occupe de creer en interne une instance d'un objet initialisé avec les parametres passé a ma fonction.
Or je n'ai aucun moyen de l'exterieur de tester le contenu des objets crees (private) depuis un test JUnit.
Comment peut on passer outre cette limitation pour tester ma classe et ses methodes ?
redefinir la méthode qui te retourne l'objet interne
tu peux aussi redéfinir la méthode qui te retourne l'objet interne puis retourner en dur l'instance que tu veux avec JMockit Core (ou annotations).
Genre si c'est cette méthode qui te crée ton object :
Code:
1 2 3 4
|
public Object create(Object paramA, Object paramB){
return null;
} |
Exemple avec JMockit Annotations :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
@Test
public void testTaMethode(){
(...)
Mockit.setUpMocks(MockToto.class);
MockToto.objectToReturn = "l'instance interne";
// Appel de la méthode que tu testes
// Vérification des invocations
Mockit.assertExpectations();
}
@MockClass(realClass = Toto.class)
public static class MockToto{
static Object objectToReturn;
@Mock(invocations = 1)
public Object create(Object paramA, Object paramB){
return objectToReturn;
}
} |
En gros a chaque fois que Toto sera appelé, ce sera le mock à la place. Du coup il faut bien penser à restaurer les définitions originales à la fin de chaque test avec Mockit.restoreOriginalDefinitions.
J'ai écris un tuto sur mon blog aussi au besoin : http://fch.blog.free.fr/index.php?pa...torial-JMockit.
++
Foucha.