IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tests et Performance Java Discussion :

API Mock, laquelle choisir ?


Sujet :

Tests et Performance Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 40
    Par défaut API Mock, laquelle choisir ?
    Bonjour,

    Je dois utiliser les mock object. J'ai découvert qu'il y avait plusieurs API pour ça et j'aimerai savoir si vous connaissiez un comparatif sur ceci. Ou sinon me citer les connaissances ou vos expériences sur les API mock que vous utiliser.

    Pour le moment easy mock a retenu mon attention car il a une documentation en français plutôt bien expliqué. Mais également JMock que j'ai pu essayer qui marche bien.

    Merci d'avance .

  2. #2
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Salut,
    La plupart (pour ne pas dire toutes) des bibliothèques de mocking sont fonctionnellement équivalentes. Donc, le choix va se baser sur d'autres critères, comme la documentation (commes tu le dis) ou le style.

    Perso, j'ai opté pour Mockito car j'aime bien comment ça s'utilise; son API.

    Pour quelques comparatifs, tu peux regarder Mockito vs EasyMock et encore Mockito vs RMock

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Je n'ai jamais utilisé que EasyMock et JMock.

    Techniquement parlant, je trouve les deux API satisfaisantes selon mes besoins, et n'ai aucune plainte à faire à aucun des deux projets.

    En terme d'usabilité, je trouve JMock plus facile à apprendre/utiliser, mais c'est subjectif.

    Par contre, je n'aime pas du tout le genre de comparatifs, montrés par Djomos, faits par les développeurs d'une API pour montrer que leur API est meilleure. Je préfère prendre des comparatifs indépendants.

  4. #4
    Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 4
    Par défaut
    Les fonctionnalités des framework de doublures de tests peuvent varier.

    Dans le cas de tests, les doublures de tests permettent de découpler le système tester de son environnement.

    Les doublures basiques:
    - Comportement Dummy (Le comportement n'est pas testé la doublure est nécessaire; pour EasyMock createNiceMock)
    - Comportement Stub/Bouchon (On ne vérifie pas les interractions, seules les réponses)
    - Comportement Spy/Espion (Les interractions sont enregistrées et vérifiées aprés coup)
    - Comprotement Mock/Simulacre (Les interractions sont attendues lors de l'éxécution)
    - Comportement Fake/Implémentation Légère (La on tape dans les tests d'intégrations)

    Dans le cas d'un projet Legacy, il faut vite s'orienter sur les mocks partiels (fonctionnalité générique), la surcharge des fonctions statiques, l'injection de mock via le classloader, le mockage des fonctions privés (court-circuit), le mockage avec espions ... ou plus radicalement abandonné les tests unitaires pous s'orienter vers des tests boîtes noires.

    Pour un projet ou une évolution from scratch, les fonctinnalités utilisées sont génériques.
    Donc choix selon l'API (annotation ou pas, séparation des comportements stub/mock), la doc et la version de Java nécessaire.

    A noter que certains projets (Spring par exemples) fournissent leurs bouchons/espions/dummy .

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2006
    Messages : 51
    Par défaut
    Mockito est vraiment bien pour la plupart des cas de mock énoncés par Sylez.

    Pour info au départ c'était un fork de easymock, et maintenant leur code est complètement réécrit. Leur API est nettement plus sympa que celle d'Easymock.
    Et pour le coup je trouve le framework plus complet que Easymock seul.
    Par contre tu ne pourras pas faire de mock de classes / fonctions statiques, Mockito ne génère que des instances de mock. Et d'ailleurs il est reconnu que les classes / fonctions statiques ne sont pas idéales pour la testabilité.

    Si tu en as le besoin JMock (ou JMockit, je ne sais plus exactement) te permettra de faire de la manipulation de bytecode au niveau classe.

    Si tu veux tester des DAO et que tu fais donc des tests avec une base de donnée, etc, tu peux utiliser DBunit. D'ailleurs si ta base n'utilise pas de features spécifiques au vendeur, eh bien tu pourrais te permettre de faire des tests sur une base hsqldb, ça oblige celà dit d'avoir un schéma synchronisé entre la base sur une machine et la base hsqldb.

    unitils intègre pas mal d'outils de test et simplifie l'utilisation de certains framework, il est particulièrement pratique pour son support DBUnit.

  6. #6
    Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 4
    Par défaut
    En effet, si le code est propre, EasyMock ou Mockito (je n'ai pas utiliser d'autres framework) suffisent.

    Aprés j'ai tendance à dire qu'il faut prendre celui qui vous met le plus à l'aise.

    Au pire, le passage de EasyMock vers Mockito ou vice versa est trés simple.

    A noter: Il existe une extension pour EasyMock et Mockito , PowerMock, qui permet de couvrir du code crade.

  7. #7
    Membre éprouvé
    Avatar de foucha
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 121
    Par défaut
    Citation Envoyé par TheNOHDirector Voir le message
    Si tu en as le besoin JMock (ou JMockit, je ne sais plus exactement) te permettra de faire de la manipulation de bytecode au niveau classe.
    C'est JMockit qui le permet. Sinon powermock permet effectivement lui aussi de mocker des méthodes statiques.
    ++
    Foucha.

    =========

    "du code propre c'est du code qui fait exactement ce qu'on croit que ça fait"

    Mes Articles DVP

Discussions similaires

  1. Librairie Reseau? Laquelle choisir
    Par Geoff-sk8 dans le forum C
    Réponses: 6
    Dernier message: 29/06/2006, 14h06
  2. [J2EE] quelle API pour Excel choisir ?
    Par vallica dans le forum Documents
    Réponses: 4
    Dernier message: 19/04/2006, 14h24
  3. [BD gratuite] Laquelle choisir?
    Par pmartin8 dans le forum Décisions SGBD
    Réponses: 13
    Dernier message: 13/04/2006, 16h15
  4. [Alimentation] Laquelle choisir ?
    Par Celelibi dans le forum Composants
    Réponses: 3
    Dernier message: 10/03/2006, 00h19
  5. [Technologie Serveur]Laquelle choisir d'après mon problème ?
    Par Mig28 dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 22/02/2006, 15h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo