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 :

Comment tester une fonction qui retourne un booléen


Sujet :

Tests et Performance Java

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 167
    Points : 85
    Points
    85
    Par défaut Comment tester une fonction qui retourne un booléen
    Bonjour,

    Voila donc je m'explique, j'ai une class Gauss qui en gros demande lit un système d'équation dans un fichiers (donné en premier paramètre), le résoud et le sauve dans un fichier fournit en second paramètre.

    j'aimerai faire un test unitaire de cette fonction qui se trouve dans Gauss :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public static boolean testEntier(int valeur, String duFichier) {
    		try {
    			valeur = Integer.parseInt(duFichier);
    			return true;
    		}catch (Exception e) {
    			//Si la valeur lue n'est pas un entier on arrète le programme :
    			System.out.println(duFichier + " n'est pas un entier (arrêt du programme)");
    			return false;
    		}
    	}
    je dispose de la class GaussTest qui pour le moment se compose de rien c'est à dire :

    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
     
    import junit.framework.TestCase;
     
    public class GaussTest extends TestCase {
     
    	protected void setUp() throws Exception {
    		super.setUp();
    	}
     
    	protected void tearDown() throws Exception {
    		super.tearDown();
    	}
     
    	public void testerTestEntier() {
    		// je ne sais pas du tout quoi marquer ici, dois-je instancier Gauss() let sauver
    		// dans une variable et appliquer ma fonction testEntier dessus?
    		// Que dois-je mettre pour les Assert ?
    	}
     
    }
    Voici également le code complet de ma class Gauss, au cas où ça s'averrerait nécessaire :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
    import java.io.*;
    import java.util.*;
     
    public class Gauss{
     
    	public static void main(String[] args){
    		String donnees, resultats;
    		donnees = args[0];
    		resultats = args[1];
    		//Lancer la resolution :
    		creerMatrice(donnees, resultats);
    	}
     
    	public static void creerMatrice(String fichier_donnees, String fichier_resultat){
    		//Declaration des variables :
    		String ligne = "";
     
    		int[][] tab = null;
     
    		boolean initialise = false;
     
    		int i, j ;
     
    		BufferedReader br = null;
    		int nbLargeur = 0;
    		//Lecture des informations dans le fichier :
    		try{
    			br=new BufferedReader(new InputStreamReader(new FileInputStream(fichier_donnees)));
    		}catch(IOException ioe){
    			System.out.println("IOException : " + ioe.getMessage());
    		}
     
    		//On remplit un tableau 2 dimenssions avec les informations lues dans le fichier :
    		i = 0;
    		try{
    			while((ligne=br.readLine()) != null){
    				j = 0;
    				StringTokenizer st = new StringTokenizer(ligne, ";");
    				nbLargeur = st.countTokens();
    				if(!initialise){
    					//S'il n'est pas initialisé, on initialise le tableau avec la bonne taille :
    					tab = new int[nbLargeur][nbLargeur-1];
    					initialise = true;
    				}
    				while (j < nbLargeur) {
    					int valeur = 0;
    					String duFichier = st.nextToken();
    					//Test pour voir si la valeur lue est bien un entier :
    					testEntier(valeur,duFichier);
    					//On affecte la valeur à une case du tableau :
    					tab[j][i] = valeur;
    	 				j++;
    				}
    				i++;
    			}
     
    		}catch(Exception e){
    			System.out.println("Une erreur s'est produite lors du remplissage du tableau : " + e.getMessage());
    			System.exit(1);
    		}
     
    		//Creation d'un objet Matrice pour résoudre le systeme :
    		Matrice mat = new Matrice(tab);
    		//Resolution du systeme :
    		if(mat.resolution()){
    			System.out.println("Systeme resolu avec succes, solutions ecrites dans : " + fichier_resultat);
    			mat.ecrireResultats(fichier_resultat);
    		}else{
    			System.out.println("Le systeme n'a pa de solution !");
    		}
    		//Sauvegarde du resultats dans le fichier prévu :
     
    	}
     
    	public static boolean testEntier(int valeur, String duFichier) {
    		try {
    			valeur = Integer.parseInt(duFichier);
    			return true;
    		}catch (Exception e) {
    			//Si la valeur lue n'est pas un entier on arrète le programme :
    			System.out.println(duFichier + " n'est pas un entier (arrêt du programme)");
    			return false;
    		}
    	}
     
     
    }
    Merci de m'aider, j'ai regardé des tutoriels mais sans succès je ne vois vraiment pas comment faire cela.
    "La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !" -Albert Einstein

  2. #2
    Tan
    Tan est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 168
    Points : 158
    Points
    158
    Par défaut
    Il suffit de faire un assert dans ta méthode test (ou de jeter une exception)

    Dans ton cas, tu peux faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void testerTestEntier() {
    		Assert.assertTrue(Gauss.testEntier(7, "titi"));
    }
    Tu peux être plus clair encore en indiquant un message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void testerTestEntier() {
          String msgErreur = "la méthode testEntier à retourner false";
          Assert.assertTrue(msgErreur, Gauss.testEntier(7, "titi"));
    }
    Note, je ne comprend pas ta méthode testEntier.
    Elle retroune vrai à partir du moment où la chaine duFichier peut être parser en nombre.

    Peut être voulais-tu faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static boolean testEntier(int valeur, String duFichier) {
    		try {
    			return valeur == Integer.parseInt(duFichier);
    		}catch (Exception e) {
    			//Si la valeur lue n'est pas un entier on arrète le programme :
    			System.out.println(duFichier + " n'est pas un entier (arrêt du programme)");
    			return false;
    		}
    	}
    A plus

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 167
    Points : 85
    Points
    85
    Par défaut
    Merci beaucoup, j'ai utilisé ta réponse et c'est en effet ce que je voulas faire

    Sur le moment je ne comprenais pas bien l'utilité d'un test JUnit c'est pour cela que je ne voyais pas comment l'utiliser.

    Je me suis également ressourcé entre temps et maintenant tout cela est plus clair.

    Merci pour la réponse elle m'a bien aidé

    @++
    "La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !" -Albert Einstein

Discussions similaires

  1. Test d'une fonction qui retourne un booléen
    Par Loko dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/10/2011, 20h40
  2. Créer une fonction qui retourne un booléen
    Par Dereck07 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/02/2008, 23h22
  3. Comment créer une fonction qui retourne un tableau?
    Par Dereck07 dans le forum Delphi
    Réponses: 4
    Dernier message: 26/04/2007, 13h16
  4. Réponses: 14
    Dernier message: 09/04/2004, 13h44
  5. [VB6] Comment faire une fonction qui renvoie 2 résultats
    Par tazarine dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 15/01/2004, 00h13

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