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

Java Discussion :

JUnit Attributs privés


Sujet :

Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 77
    Points : 46
    Points
    46
    Par défaut JUnit Attributs privés
    Bonjour,

    Je suis confronté à un petit problème. J'effectue actuellement des tests unitaires pour mon programme et je suis bloqué sur une classe. Cette classe possède un attribut privé. Et une des methodes de cette classe utilise cet attribut privé et reagit en fonction de sa valeur. Le problème, c'est comment faire des tests unitaire de cette methode sans pouvoir modifier (ni même instancier) la variable privé ?
    J'ai essayé de voir du côté de mockito mais j'ai pas trouvé grand chose

    Merci de votre aide, et bonne fêtes de fin d'année au passage

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2013
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2013
    Messages : 191
    Points : 472
    Points
    472
    Par défaut
    Je t'aurais bien conseillé de passer par l'introspection avec le package java.lang.reflect afin de modifier les attributs de ton objet en by-passant les règles de visibilité des attributs, mais je ne sais pas si c'est une bonne pratique pour les tests unitaires.
    Tu trouveras plus d'info sur l'introspection ici : http://ricky81.developpez.com/tutori...pi/reflection/

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Tu n'a pas a tester le programme par rapport à la valeur de cette variable privé. Privé ça veux dire que le test s'en cogne qu'elle existe. Tu dois pouvoir modifier ta classer dans le futur en supprimant cette variable privée / changeant son type / ses valeurs possible sans influencer le test.
    Si cette valeur privée à de l'influence sur une méthode ça veux dire deux choses:

    1) cette valeur change en fonction de comportements extérieurs
    2) des méthodes ont un comportement différent en fonction de cette valeur.

    Donc ton test doit consister en créer ces inputs extérieurs (1) et vérifiier que la méthode réagit comme attendu (2).

    Exemple simple: j'ai une variable privée qui contient le nombre d'appels fait depuis l'instanciation. J'ai une méthode build() qui incrémente cette valeur, j'ai une méthode getCount() qui retourne le nombre de build. Le test sera donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Machin m = new Machin();
    assertEquals(0,m.getCount());
    m.build();
    assertEquals(1,m.getCount());
    m.build();
    assertEquals(2,m.getCount());
    Et mon test s'en fout de savoir comment Machin fait son comptage. Il ignore si il y a une variable count, _count, __count_build, ou List<Truc> sur lequel il fait un getSize(). La popote est privée, la recette est privée et n'a aucune influence sur les autres classes, seul compte le comportement visible.

Discussions similaires

  1. [Icefaces] Attribut privés classe Singleton
    Par jad_jad dans le forum Frameworks Web
    Réponses: 1
    Dernier message: 07/02/2009, 00h27
  2. Réponses: 2
    Dernier message: 14/11/2008, 11h25
  3. Réponses: 13
    Dernier message: 28/12/2007, 09h38
  4. Accéder à une attribut privé
    Par amazircool dans le forum Langage
    Réponses: 9
    Dernier message: 05/10/2007, 16h51
  5. héritage attributs privés
    Par charlene44 dans le forum Diagrammes de Classes
    Réponses: 2
    Dernier message: 16/05/2007, 00h33

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