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

Langage Java Discussion :

Test d'une classe(junit)


Sujet :

Langage Java

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2014
    Messages : 80
    Points : 46
    Points
    46
    Par défaut Test d'une classe(junit)
    Bonsoir,

    j'ai un petit problème lors de la compilation d'une classe qui contient une méthode de teste, si quelqu'un a la gentillesse de m'aider s'il vous plait ça serait sympa donc :

    la classe qui contient la méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    package les_modules.mom;
       public class Lol {
            public static int maxTab(int [] tab) {
              int max = 0;
     
              for(int i =0;i<tab.length;i++) {
                  if(tab[i]>max) {
                     max = tab[i];
                   }
               }
          return max;
         }   
    }

    la classe qui teste la méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    package les_modules.mom;
    import org.junit.Test;
    import static org.junit.Assert.*;
      public class Testlol {
        @Test
           public void cas1() {
            int [] tab  = {1,2,3,4,7};
            assertEquals(7, Lol.maxTab(tab) );    
         }
     
    }
    message lors de la compilation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    symbol : variable Lol
    assertEquals(7, Lol.maxTab(tab) );
                           ^
     
    il considère la classe Lol comme une variable, une méthode static peut être utilise en faisant nomClasse.nomMéthode, nn ?

  2. #2
    Membre confirmé Avatar de freddou17
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2013
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 341
    Points : 566
    Points
    566
    Par défaut
    Il ne te manque pas un import ??? ta classe Lol?

    ++
    "Aucun de nous ne sait ce que nous savons tous, ensemble."
    Lien vers mon appli Funcash n'hésitez pas à donner votre avis

  3. #3
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Bonjour,

    Tu n'as pas de problème avec l'import de ta classe Lol.
    Celle-ci fait partie du même package que ta classe de test. Elle est donc visible par celle-ci.

    Cependant, c'est bien un problème d'import, mais concertant le framework de test. En effet, assertEquals est une méthode static.
    Avec ton import actuel, tu dois faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //import org.junit.Assert;
    Assert.assertEquals(7, Lol.maxTab(tab) );
    Sinon, il t'es possible d'importer les méthodes staticde la classe via l'import suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    import static org.junit.Assert.*;
    Et là, il te sera possible réaliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    assertEquals(7, Lol.maxTab(tab) );
    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2014
    Messages : 80
    Points : 46
    Points
    46
    Par défaut
    merci pour vos réponses, en fait dans mon éditeur de texte(vi) j'avais déjà fait : import static org.junit.Assert.*;
    c'est juste en le recopiant ici que j'ai omis le *. Donc j'obtiens toujours la même erreur : symbol : variable Lol.
    Il considére la classe Lol comme une variable ?

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    la classe Lol n'est pas reconnue.Essaies de commenter le nom du package dans les 2 classes car le test a l'air bon

  6. #6
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    bonjour,
    vu que tu code en vi j'imagine alors que tu lances les commandes de compilation à la main !
    donc as tu bien compiler la classe les_modules.mom.Lol avant de compiler les_modules.mom.Testlol car ton message d'erreur laisse a penser que non ?

    Soit tu lance javac avec l'ensemble des classes séparé par des espace, soit tu lance javac *.java !

    As tu fais la compilation comme cela ?
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2014
    Messages : 80
    Points : 46
    Points
    46
    Par défaut
    merci beaucoup ça marche, en fait lorsque je fais : javac TestLol.java , il m'affiche l'erreur bien que la classe Lol soit compiler, par contre lorsque je fais : javac *.java, là la compilation réussi , bizarre non ?

  8. #8
    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
    non, pas bizarre du tout. Tu n'es pas dans le bon répertoire. Tu dois remonter de deux crans et tapper

    javac les_modules/mom/Testlol.java

    En fait quand tu fais javac *.java, tu met tout dans le scope du compilateur et il retrouve ses gosses. Sinon, quand tu n'en met qu'un, il cherche dans le classpath après ta classe Lol, donc il cherche ./les_modules/mom/Lol.class qui n'existe pas puisque tu n'es pas au bon niveau de ta hierarchie quand tu tappe tes commandes.

Discussions similaires

  1. [EJB3.1] Test d'une class @Stateless avec façade
    Par Alskar dans le forum Java EE
    Réponses: 3
    Dernier message: 14/05/2012, 08h26
  2. Passer des arguments à une classe de test Junit
    Par safi11 dans le forum Général Java
    Réponses: 8
    Dernier message: 03/01/2012, 15h30
  3. Réponses: 3
    Dernier message: 11/07/2011, 18h07
  4. [JUnit] comment écrire des test dans une classe DAO
    Par nouramin dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 23/04/2010, 11h05
  5. [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

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