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

C# Discussion :

Testing unitaire et simulacres


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2010
    Messages : 4
    Par défaut Testing unitaire et simulacres
    Bonjour a tous,

    Voila il ya quelque chose que je ne comprend pas au niveau des tests unitaires avec mock objects.

    Je vous expose le problème, j'ai une application avec une couche présentation, une couche business et une couche d'accès aux données, chaque classe de ma couche business contient un champs qui représente un objet de la classe d'accès aux données, cet objet est instancié dans le constructeur, mon but est de tester la couche business
    J'utilise le framework rhino mocks pour creer un mock de la couche d'accès au données, le mock est créé sur base de l'INTERFACE de la couche d'accès aux données. Mon problème est le suivant, il m'est impossible d'assigner le mock au champ de la couche business vu que le type est celui de l'interface et pas de la classe d'accès au données. comment dois je procéder pour assigner le mock (et non pas la vrai classe Acces données) a ma classe business afin de la tester..

    D'avance merci beaucoup pour vos réonses..

  2. #2
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Tu dis que ton objet business instancie le DAO dans le constructeur ? Tu as quelque chose comme this.dao = new DAO() ?
    Tu auras en effet du mal à injecter un mock à la place... Tu as donc intérêt à sortir du constructeur l'instanciation du DAO ; ton objet business prendra donc un IDAO en paramètre de son constructeur, ou simplement sous form d'une propriété.
    Et dans ton test, tu aurais alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    IDao mock = truc.StrictMock<IDao>();
    Business b = new Business(mock);

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    mettre une liaison dans un BO vers une classe de la DAO...
    tiens ca me rappel vaguement ce que l'on reproche à Entity Framework 1 (dotnet 3.5sp1)

    ca fait pas vraiment ce qu'on appel une entité POCO, hors la bonne programmation préfèrera une classe POCO dans ton Business Objects Layer.
    Par POCO entend classes qui ignorent leur persistance.

    C'est à ta Business Logic Layer de faire la liaison entre tes entités POCO et les objets DAO pour la persistance.

    enfin tu peux toujours continuer comme cela, mais j'ose espérer alors que tu n'expose pas tes objets métiers sous cette forme à la couche supérieure.

  4. #4
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Citation Envoyé par cinemania Voir le message
    mettre une liaison dans un BO vers une classe de la DAO...
    Je sais pas si ton message est en réponse au mien, mais si c'est le cas, tu m'as mal compris, ou disons que j'ai pas été assez précis. Quand je disais objet business, je pensais objet de la couche business, of course.

    Même si le pattern active record a encore ses fans (dont je ne suis pas)

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2010
    Messages : 4
    Par défaut
    Merci! je ne comprend pas tout (je débute)
    Mais en tout cas je vais modifier mes constructeurs et passer par des propriétés. En fait j'ai découvert qu'une propriété de type IDAO pouvait accepter un objet de type DAO!
    Ce qui simplifie mon problème. J'assigne donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     IDAO _dao = new DAO(); //quand objet réel et
    IDAO _dao = mock IDAO; //quand simulacre pour test
    et ca fonctionne..

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tests Unitaires - Production de documents
    Par giviz dans le forum Test
    Réponses: 13
    Dernier message: 07/02/2005, 08h41
  2. Tests unitaires en C#
    Par Bouboubou dans le forum Test
    Réponses: 2
    Dernier message: 01/10/2004, 13h03
  3. [TESTS] Tests unitaires
    Par mathieu dans le forum Test
    Réponses: 4
    Dernier message: 08/01/2004, 12h59

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