Discussion: JUnit4 Java test

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    isty
    Inscrit en
    juin 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : isty
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2014
    Messages : 29
    Points : 29
    Points
    29

    Par défaut JUnit4 Java test

    Bonjour,

    J'ai un souci pour tester une fonction de classe en java avec JUnit4.
    voila la classe :
    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
    22
    23
    24
    25
    26
    27
    28
     
    import java.util.ArrayList;
     
    public class Liste {
     
    	public static ArrayList<ArrayList<Integer>> fct (ArrayList<Integer> liste, Integer taille){
     
    		ArrayList<ArrayList<Integer>> List = new ArrayList<ArrayList<Integer>>();
    		ArrayList<Integer> list = new ArrayList<Integer>();
     
    		int i=0,j=0,k=0;
    		while (i<liste.size())
    		{
    			list.clear();
    			for ( j = 0; j < taille; j++) 
    			{
    				if((j+i)<liste.size())
    					list.add(liste.get(i+j));
    			}
    			List.add((ArrayList<Integer>) list.clone());
    			i+=taille;
    			k++;
    		}
     
    		return List;
    	}
     
    }
    J'ai crée ce test unitaire :

    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
     
    import static org.junit.Assert.*;
     
    import java.util.ArrayList;
     
    public class test {
     
    	@org.junit.Test
    	public void testListe(){
    		ArrayList<Integer> l1 = new ArrayList<>();
    		for (int i = 0; i < 15; i++) {
    			l1.add(i);
    		}
    		assertEquals(l1, Liste.fct(l1, 5));
     
    	}
     
    }
    Mais le test ne marche pas !
    PS : j'ai ajouter les jar suivants au projet : hamcrest-core-1.3-sources.jar et junit-4.12.jar

    Merci de vos aides

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

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

    Informations forums :
    Inscription : avril 2007
    Messages : 25 220
    Points : 48 243
    Points
    48 243

    Par défaut

    1) Elle est censée faire quoi ta fonction? Le but d'un test unitaire c'est de tester la sortie en fonction de l'entrée. Donc il faut que tu commence par nous décrire ce que tu veux comme fonction si tu veux qu'on corrige ton test.

    2) ton test (ou ta fonction) n'a pas de sens. Tu as une fonction qui retourne une List<List<Integer>> et tu demande que cette valeur soit égale à un List<Integer>. Donc tu compare un panier de pommes avec une pomme. Soit tu compare 2 paniers, soit 2 pommes.
    David Delbecq Java developer chez HMS Industrial Networks AB.     LinkedIn | Google+

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    isty
    Inscrit en
    juin 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : isty
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2014
    Messages : 29
    Points : 29
    Points
    29

    Par défaut

    Merci de votre réponse.

    En fait, la fonction prend un paramètre « liste » et un paramètre « taille » et retourne une liste de sous liste, où chaque sous liste a au maximum « taille » éléments.
    Exemples d'entrées et sorties :
    partition([1,2,3,4,5], 2) retourne: [ [1,2], [3,4], [5] ]
    partition([1,2,3,4,5], 3) retourne: [ [1,2,3], [4,5] ]
    partition([1,2,3,4,5], 1) retourne: [ [1], [2], [3], [4], [5] ]

    Je sais pas comment faire les tests unitaires...
    Avec une classe main, je sais que ma fonction est juste (elle donne ce que je veux).

    Merci

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

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

    Informations forums :
    Inscription : avril 2007
    Messages : 25 220
    Points : 48 243
    Points
    48 243

    Par défaut

    Citation Envoyé par mehdido04 Voir le message
    Merci de votre réponse.

    En fait, la fonction prend un paramètre « liste » et un paramètre « taille » et retourne une liste de sous liste, où chaque sous liste a au maximum « taille » éléments.
    Exemples d'entrées et sorties :
    partition([1,2,3,4,5], 2) retourne: [ [1,2], [3,4], [5] ]
    partition([1,2,3,4,5], 3) retourne: [ [1,2,3], [4,5] ]
    partition([1,2,3,4,5], 1) retourne: [ [1], [2], [3], [4], [5] ]

    Je sais pas comment faire les tests unitaires...

    Merci
    Exactement comme tu viens de l'écrire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    	@org.junit.Test
    	public void testListe(){
    		ArrayList<Integer> l1 = new ArrayList<>();
    		for (int i = 0; i < 15; i++) {
    			l1.add(i);
    		}
                    new ArrayList<ArrayList<Integer>> expected = new ArrayList<ArrayList<Integer>> ();
                    expected.add(new ArrayList<Integer>(Arrays.asList((Integer)1,(Integer)2));
                    expected.add(new ArrayList<Integer>(Arrays.asList((Integer)3,(Integer)4));
                    expected.add(new ArrayList<Integer>(Arrays.asList((Integer)5));
    		assertEquals(expected, Liste.fct(l1, 5));
    	}
    Bien sur ce serait vachement plus court à écrire et à lire si ta fonction s'était contentée de retourner des List plutôt que de forcer des ArrayList.
    David Delbecq Java developer chez HMS Industrial Networks AB.     LinkedIn | Google+

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

Discussions similaires

  1. Java test client server
    Par carton99 dans le forum Débuter
    Réponses: 4
    Dernier message: 07/01/2012, 21h57
  2. [Java] Test SCJP
    Par manjava dans le forum Certifications
    Réponses: 3
    Dernier message: 23/10/2011, 13h43
  3. Réponses: 0
    Dernier message: 22/03/2010, 10h41
  4. JAVA - Test Minus Majus
    Par henri93 dans le forum Général Java
    Réponses: 3
    Dernier message: 29/07/2009, 17h36

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