Re: Mockito test
Laurent Forêt <[email protected]> Tue, 8 Feb 2011 12:32:28 +0100
| Newsgroups | gmane.comp.java.french.general |
|---|---|
| Message-ID | <[email protected]> |
2011/2/8 jerome moliere <[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 > C'est toujours d'actualité car la solution m'intéresse. Même si j'ai contourné en prenant en compte la correction dans un test d'intégration. > 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? > > Oui > B lui doit avoir des préconditions le prémunissant de valeurs folles > envoyées par A pas plus... > Oui c'est le cas. > 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é ... > Si seulement ;) ! C'est un banal formatage d'une string en fonction du contexte d'exécution. Mais imagine je me plante dans mon formatage, je suis bon pour une relivraison et des insultes des intégrateurs. > 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 > Je dirais pareil, mais quel énergie (c'est relatif) à dépenser pour une si petite correction. Mais néanmoins ce bout de code doit être validé car sinon l'appli marche pas. Je pensais vraiment que mockito pouvaient m'aider sur ce coup là. Mais même pas, la complexité du service à mocker me décourage. My 2 cents > Je prends ;). > Jerome > > -- > J.MOLIERE - Mentor/J > auteur Eyrolles > > >