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 :

Passer des arguments à une classe de test Junit


Sujet :

Java

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Août 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2010
    Messages : 33
    Points : 27
    Points
    27
    Par défaut Passer des arguments à une classe de test Junit
    Bonjour,

    J'ai suivie ce tutorial http://www.vogella.de/articles/JUnit/article.html pour créer un test Junit.
    Est ce que c'est possible de donner des paramètres à une classe de test ?
    Dans l'exemple donné dans le lien, est ce qu'on peut donner des arguments à la fonction "testMultiply" ?

    Merci en avance.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2010
    Messages : 394
    Points : 1 212
    Points
    1 212
    Par défaut
    Bonjour,

    Est ce que c'est possible de donner des paramètres à une classe de test ?
    Pas à ma connaissance. Si tu pouvais le faire, lorsque tu lances ton test, quelle valeur aurait cet argument (ou ces arguments) ?

    D'ailleurs, je ne vois pas de cas où cela pourrait être utile. Si tu veux tester toute une plage de valeurs, c'est dans ta classe de test que tu vas parcourir ces valeurs.

    Tu as un besoin précis, ou bien c'est juste une question théorique ?

    Mako.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Août 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2010
    Messages : 33
    Points : 27
    Points
    27
    Par défaut
    Merci pour ta réponse !

    Si tu pouvais le faire, lorsque tu lances ton test, quelle valeur aurait cet argument (ou ces arguments) ?
    Dans l'exemple donné dans le lien, dans la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    assertEquals(50, math.multi(5, 10));
    je voudrai donner les paramètres 5 et 10 en paramètres lors de l’exécution du test.

    Tu as un besoin précis, ou bien c'est juste une question théorique ?
    Dans les tests que je voudrais faire plus tard, j’aurai besoin de se connecter à un web service et donc je veux donner en paramètres l'URL, numéro de port...

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2010
    Messages : 394
    Points : 1 212
    Points
    1 212
    Par défaut
    Bonjour,

    Dans l'exemple donné dans le lien, dans la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    assertEquals(50, math.multi(5, 10));
    je voudrai donner les paramètres 5 et 10 en paramètres lors de l’exécution du test.
    Cela ne change pas le problème. Admettons que cela soit possible. Ta classe de test donnerait donc quelque chose dans le genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class MyClassTest {
     
         @Test
         public void testMultiply(int _mult1, int _mult2, int _resultat) {
              MyClass tester = new MyClass();
              assertEquals("Result", _resultat, tester.multiply(_mult1, _mult2));
         }
    }
    Mais lorsque tu lances ton test, comment il (le test) peut savoir ce que tu veux comme valeur pour _mult1, _mult2 et _resultat ?

    Si tu veux donner une URL, un numéro de port, etc. à tes tests, c'est que tu les connais. Donc ce sont les méthodes de connexions au web services qui vont recevoir ces valeurs, tout comme dans ton exemple c'était la méthode tester.multiply() qui recevait les paramètres.

    De manière générale, pour des tests JUnit, tu vas tester des méthodes (ex. multiply()) avec différentes valeurs, au sein d'une méthode de test, qui elle se chargera de faire varier ces valeurs.

    J'espère avoir été plus clair...

    Mako.

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 957
    Points : 4 386
    Points
    4 386
    Par défaut
    Citation Envoyé par safi11 Voir le message
    Bonjour,

    J'ai suivie ce tutorial http://www.vogella.de/articles/JUnit/article.html pour créer un test Junit.
    Est ce que c'est possible de donner des paramètres à une classe de test ?
    Dans l'exemple donné dans le lien, est ce qu'on peut donner des arguments à la fonction "testMultiply" ?

    Merci en avance.
    1. Via un fichier contenant les résultats à obtenir que vous chargez dans une méthode annotée @Before ou @BeforeClass

    2. avec @RunWith(value=Parameterized.class) et @Parameters sur une méthode static et en ajoutant un constructeur à la classe de test et qui prend les paramètres en argument

    3. si vous utilisez un containeur comme Spring, par injection des valeurs : via @ContextConfiguration, @ActiveProfiles et @Value

    4. il y a certainement encore d'autres façons de faire…

  6. #6
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Points : 12 815
    Points
    12 815
    Par défaut
    Idéalement, chacun de tes tests ne doit tester qu'un seul jeu de valeurs en entrée, pour une seule réponse en sortie. Donc tu dois faire autant de tests que de jeu de test. En revanche, rien ne t’empêche de n’écrire que les jeux de tests dans tes méthodes, puis d'appeler une méthode factorisée qui réalisera le test à proprement parlé. J'ai présenté un peu ce mécanisme dans un article (http://thierry-leriche-dessirier.dev...va/methode-3t/)

    Pour aller plus loin, tu peux utiliser des injecteurs, par exemple spring comme ça a été proposé plus haut. Mais il faut que ton injecteur aille chercher des valeurs, donc ça ne change rien, si on y pense, à ce que je te propose ci-dessus.

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Août 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2010
    Messages : 33
    Points : 27
    Points
    27
    Par défaut
    Merci pour vos réponses

    J'ai choisis la solution 2 de JeitEmgie et ça marche très bien, mais mon problème n'est toujours pas résolus !
    Les arguments sont donnés dans le code, est ce qu'il y a une possibilité de les donner dans un fichier ?
    Sinon, si j’exécute mon code avec ant est ce possible de lui donner les paramètres dans le fichier build.xml ?

    Encore merci !

  8. #8
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 957
    Points : 4 386
    Points
    4 386
    Par défaut
    Citation Envoyé par safi11 Voir le message
    Merci pour vos réponses

    J'ai choisis la solution 2 de JeitEmgie et ça marche très bien, mais mon problème n'est toujours pas résolus !
    Les arguments sont donnés dans le code, est ce qu'il y a une possibilité de les donner dans un fichier ?
    Sinon, si j’exécute mon code avec ant est ce possible de lui donner les paramètres dans le fichier build.xml ?

    Encore merci !
    trivialement :
    vous construisez vos paramètres en lisant un fichier dans la méthode static…

  9. #9
    Nouveau membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Août 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2010
    Messages : 33
    Points : 27
    Points
    27
    Par défaut
    trivialement :
    vous construisez vos paramètres en lisant un fichier dans la méthode static…
    C'est ce que j'ai fait finalement

    Merci !

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

Discussions similaires

  1. Passer des arguments d'une classe à l'autre
    Par l0quito dans le forum Odoo (ex-OpenERP)
    Réponses: 25
    Dernier message: 19/11/2013, 16h46
  2. Passer des arguments à une JRDataSource custom
    Par blured dans le forum iReport
    Réponses: 1
    Dernier message: 11/02/2010, 18h24
  3. [JUnit] Lancer des tests JUnit depuis une classe de test
    Par naglafar dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 29/07/2008, 15h51
  4. passer des arguments d'une JSP a une classe Java
    Par midou84 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 02/04/2008, 10h58
  5. [JSP][STRUTS] Passer des objets à une classe action
    Par maphi dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 10/08/2005, 16h55

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