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

Spring Java Discussion :

[EasyMock] Injection de dépendance à l'éxécution


Sujet :

Spring Java

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2005
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 19
    Points : 14
    Points
    14
    Par défaut [EasyMock] Injection de dépendance à l'éxécution


    Désireux de tester mon code, j'utilise EasyMock 2.0 pour simuler des objets DAO dans une application Spring. J'aurais besoin de savoir comment injecter dynamiquement un bean (mon MOCK) avec Spring.

    L'idée est simple:
    Après le chargement du contexte Spring, je voudrais remplacer dans ce contexte le bean CommandDaoIml par le bean CommandDaoMock (ce même bean étant une propriété d'un bean CommandServiceImpl), et cela sans toucher au code, cette injection étant seulement utile pour les tests.

    Les solutions comme mettre un setter pour le bean CommandDaoIml dans l'interface ICommandService implémenté par CommandServiceImpl ne me convient pas (ça modifie mon code et j'ai beaucoup de classes du même type à tester, et mettre les setters de propriétés d'une implémentation dans son interface n'est pas très clean).

    Merci d'avance pour vos conseils.

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    Si ton objet mock extend ton dao classique alors je peux imaginer que tu puisses l'injecter sans modifier ton code

    tu modifies /ou créer un applicationContext spécifique au test en utilisant un ref_bean sur ton mock dao à la place d'un dao classique

  3. #3
    Membre actif Avatar de tnodev
    Profil pro
    SSSSS
    Inscrit en
    Mai 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : SSSSS

    Informations forums :
    Inscription : Mai 2005
    Messages : 182
    Points : 231
    Points
    231
    Par défaut
    Les classes Mock servent aux tests unitaires de la classe et ne nécessitent, en thérorie, rien d'autre que la classe à tester (aucune dépendance extérieure).
    Pour ma part, je n'utilise pas les fichiers de context de Spring pour les test Mock, j'injecte à la mimime les services Mock dans mes classes à tester.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class TestAnnuaireMgrImpl extends BaseTest {
     
        private AnnuaireMgrImpl annuaireMgr;
     
        @Override
    	protected void setUp() throws Exception {
    	    annuaireMgr = new AnnuaireMgrImpl();
    	    annuaireMgr.setServiceDAO(new MockServiceDAO());
    	    annuaireMgr.setServiceMgr(new MockServiceMgr());
    	}

Discussions similaires

  1. [EJB3] [JBoss] Injection de dépendance circulaire ?
    Par Claythest dans le forum Java EE
    Réponses: 6
    Dernier message: 04/08/2009, 08h11
  2. [Framework] injection de dépendances par constructeur
    Par skud dans le forum Spring
    Réponses: 6
    Dernier message: 16/05/2008, 14h15
  3. [Framework] Injection de dépendances ; comment se passer du XML ?
    Par ummon99 dans le forum Spring
    Réponses: 3
    Dernier message: 12/01/2008, 09h19
  4. [EJB3] Injection de dépendance et Stateful
    Par newbeewan dans le forum Java EE
    Réponses: 1
    Dernier message: 15/05/2007, 07h33
  5. Spring + TagSupport et injection de dépendance
    Par worldchampion57 dans le forum Spring Web
    Réponses: 2
    Dernier message: 26/02/2007, 09h01

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