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 :

Limites lors de tests JUnit


Sujet :

Tests et Performance Java

  1. #1
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut Limites lors de tests JUnit
    Hello je suis confronté a une limitation lors d'un test JUnit.

    Je souhaite tester une methode "addXXX" d'une classe qui s'occupe de creer en interne une instance d'un objet initialisé avec les parametres passé a ma fonction.

    Or je n'ai aucun moyen de l'exterieur de tester le contenu des objets crees (private) depuis un test JUnit.

    Comment peut on passer outre cette limitation pour tester ma classe et ses methodes ?
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  2. #2
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Si vraiment il est justifié qu'ils soient private, ne les teste pas. Teste uniquement par les résultats visibles.

    Si tu ne peux pas tester simplement par ce qui est visible, c'est que probablement il faut rendre public certaines choses. À toi de savoir lesquelles.

    Sinon, par le système du AccessibleObject.setAccessible tu peux passer des accés privés au runtime. C'est la solution de facilité qui marche à tous les coups.
    Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
    Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.

  3. #3
    Membre actif
    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
    Points : 251
    Points
    251
    Par défaut redefinir la méthode qui te retourne l'objet interne
    tu peux aussi redéfinir la méthode qui te retourne l'objet interne puis retourner en dur l'instance que tu veux avec JMockit Core (ou annotations).

    Genre si c'est cette méthode qui te crée ton object :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public Object create(Object paramA, Object paramB){
    	return null;
    }
    Exemple avec JMockit Annotations :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    	@Test
    	public void testTaMethode(){
                    (...)
    		Mockit.setUpMocks(MockToto.class);
                    MockToto.objectToReturn = "l'instance interne";
     
    		// Appel de la méthode que tu testes
     
                    // Vérification des invocations
    		Mockit.assertExpectations();
    	}
     
    	@MockClass(realClass = Toto.class)
    	public static class MockToto{
                    static Object objectToReturn; 
    		@Mock(invocations = 1)
                    public Object create(Object paramA, Object paramB){
    	                  return objectToReturn;
                    }
    	}
    En gros a chaque fois que Toto sera appelé, ce sera le mock à la place. Du coup il faut bien penser à restaurer les définitions originales à la fin de chaque test avec Mockit.restoreOriginalDefinitions.

    J'ai écris un tuto sur mon blog aussi au besoin : http://fch.blog.free.fr/index.php?pa...torial-JMockit.

    ++
    Foucha.
    ++
    Foucha.

    =========

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

    Mes Articles DVP

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/03/2012, 14h11
  2. Désactiver les logs lors de test unitaires (JUnit)
    Par charlands dans le forum Logging
    Réponses: 5
    Dernier message: 12/12/2010, 00h31
  3. [test] Limites des outils Jmeter , JUnit, PhpUnit ?
    Par foufa007 dans le forum Outils
    Réponses: 5
    Dernier message: 19/06/2007, 11h12
  4. [JUnit] @Test, Junit et Java 1.5
    Par pierreonxbox dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 18/04/2006, 15h55
  5. [Plugin Test] JUnit et autres outils...
    Par seb-astien dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 19/09/2005, 12h12

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