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 :

Mock et inversion de contrôle. ça n'a rien à voir, c'est complémentaire, c'est concurrent ?


Sujet :

Tests et Performance Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de Pierre8r
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 518
    Par défaut Mock et inversion de contrôle. ça n'a rien à voir, c'est complémentaire, c'est concurrent ?
    Bonjour,

    Mock et inversion de contrôle.
    ça n'a rien à voir, c'est complémentaire, c'est concurrent ?

    Merci,

  2. #2
    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
    c'est complémentaire ! Cela rend le code testable. L'inversion de controle, et plus particulierement l'injection de dépendances permet de poser des tests en passant des mocks.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class MyClass {
      public MyClass(){
      }
      void doOperation(){
         MyDao dao = new Dao();
         dao.doOperation();
      }
    }
    Si je veux tester doOperation, je ne peux pas car je n'ai pas d'autre choix que d'utiliser le vrai Dao. Si j'utilise l'injection de dépendances, les tests sont plus faciles à poser car on a accès à une référence du dao.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class MyClass {
      MyDao dao;
     
      public MyClass(MyDao dao){
        this.dao = dao;
      }
      void doOperation(){
         dao.doOperation();
      }
    }
    Le test devient posable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    @Test
    public void testDoOperation {
      MyClass myClass = new MyClass(mockDao);
      myClass.doOperation();
     
      // assertions
    }
    Les responsabilités sont maintenant bien découpées : MyClass s'occupe de la logique métier mais c'est l'IOC par le biais d'injection de dépendance ou de factory qui s'occupe de dessiner les graphes d'objets. Je peux mettre les mocks que je veux.
    ++
    Foucha.

    =========

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

    Mes Articles DVP

Discussions similaires

  1. [PHPUnit] Contrôle de retour de valeur de MOCK objects
    Par razam dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 14/04/2015, 16h23
  2. Réponses: 10
    Dernier message: 11/05/2014, 18h59
  3. Réponses: 21
    Dernier message: 06/06/2013, 16h38
  4. [Kylix] Contrôle DBGrid
    Par KThrax dans le forum EDI
    Réponses: 1
    Dernier message: 10/05/2002, 14h18

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