Re: Mockito test

jerome moliere <[email protected]> Tue, 8 Feb 2011 11:55:13 +0100
Newsgroups gmane.comp.java.french.general
Message-ID <[email protected]>
Le 4 février 2011 11:24, Laurent Forêt <[email protected]> a écrit :

> Merci Jérôme pour ta sollicitude , je me sens moins seul sur ce coup là :).
>
> Salut laurent,
mais de rien ....j 'ai un peu de temps aujourd''hui si ce n'est pas trop
tard

> En fait le bug est assez facile à reproduire c'est un service/EJB/Component
> A coder dans un module éponyme A
> qui passe un mauvais paramètre au service B coder dans un module éponyme
> B. Le bug est dans A mais est détecté dans B.
>
>
ok je vois mieux...


> La question que je me pose donc est comment valider la correction de A sans
> avoir à faire un test d'intégration de B.
>


si je ne m'abuse ta question sous entend , comment tester que A remplit son
contrat ?
par définition c'est dans A que cela se passe non?

B lui doit avoir des préconditions le prémunissant de valeurs folles
envoyées par A pas plus...

> Je pensais à première vue couper la poire en deux injecter mon service B
> dans A et mocker toutes les injections des services dont dépendaient B mais
> c'est fastidieux pénible et complètement hors de propos dans le cadre d'un
> test du module A. D'ou une idée de mocker jusqu'au moment ou je suis  sur
> que le bout de code de B qui plantait soit passé, mais ça, ça implique une
> bonne connaissance du code de B qui peut à tout moment changer.
>
>
je suis d'accord tu ne peux te permettre de faire cela

> Après il y a une autre solution qui consiste à valider tout simplement
> comme B le paramètre généré par A . Mais cela implique tout d'abord un
> refactoring de A pour pouvoir intercepter le paramètre incriminé (solution
> chirurgicale qui me parait pas opportune). Mais aussi, il faut recoder dans
> le test de A la validation de ce même paramètre (duplication de code) ou
> encore utiliser directement le code de validation du paramètre dans B (mais
> la ca redevient un test d'intégration de B).
>
>
ton paramètre doit etre complexe pour nécessiter une telle complexité ...
dans ta méthode de A appelée depuis B tu dois tester la correction de ce
paramètre , c'est bien du test unitaire de A dans un contexte peut etre
spécial mais cela reste du test unitaire du composant me semble t'il....
Donc même si cela ne t'arrange pas , je dirai que cela doit être fait à ce
niveau
My 2 cents
Jerome

-- 
J.MOLIERE - Mentor/J
auteur Eyrolles