Mardi 27 septembre 2005

Rappel :

JUnit définit 3 classes principales:

TestCase qui est une classe de test. Chaque classe de test dérive de TestCase qui elle-même dérive de la classe Test qui est une classe de test. Chaque classe de test dérive de qui elle-même dérive de la classe .

TestSuite qui est un ensemble de tests qui dérive de la classe Test et qui contient des instances de la classe Test . Elle peut donc contenir des TestCase ou d'autres TestSuite ( Design Pattern "Composite") qui est un ensemble de tests qui dérive de la classe et qui contient des instances de la classe Test . Elle peut donc contenir des TestCase ou d'autres TestSuite ( "Composite")

TestRunner qui permet de lancer l'exécution d'une liste de Test. qui permet de lancer l'exécution d'une liste de Test.

Pour utiliser ce framework, il suffit donc d'écrire des classes de test dérivées de TestCase, placer une instance de chaque test dans une hiérarchie de TestSuite et enfin donner le tout à un TestRunner pour qu'il l'exécute.

Les méthodes de test

Dans toutes les précédentes versions, Junit utilisait la réflexion et les règles de nommage Sun pour localiser les méthodes de test.

import junit.framework.TestCase;

public class CalculerSalaireTest extends TestCase {

private int salaireMensuel = 1500 ;

private int prime = 5000;

public void testCalculerSalaireAnnuel() {

int salaireAnnuel = salaireMensuel *12 + prime;

assertEquals(23000, salaireAnnuel);

}

}

Dans JUnit 4, les tests sont identifies par l’annotation suivante: @Test

import org.junit.Test;

import junit.framework.TestCase;

public class CalculerSalaireTest extends TestCase {

private int salaireMensuel = 1500 ;

private int prime = 5000;

@Test void testCalculerSalaireAnnuel() {

int salaireAnnuel = salaireMensuel *12 + prime;

assertEquals(23000, salaireAnnuel);

}

}

L’avantage de l’annotation @Test est que vous n’avez plus besoin de nommer vos méthodes testNomDeMaMethode().

Du coup il est possible de renommer les fonctions de test de la manière que l’on veut.

import org.junit.Test;

import junit.framework.TestCase;

public class CalculerSalaireTest extends TestCase {

private int salaireMensuel = 1500 ;

private int prime = 5000;

@Test void SalaireAnnuel() {

int salaireAnnuel = salaireMensuel *12 + prime;

assertEquals(23000, salaireAnnuel);

}

}

Il n’est plus nécessaire d’étendre la classe TestCase pour avoir une classe de test. L’annotation @Test et l’import de la classe d’assertion (junit.Assert) suffit pour pouvoir utiliser les nombreuses methodes assertXXX().

import org.junit.Assert;

public class CalculerSalaireTest{

private int salaireMensuel = 1500 ;

private int prime = 5000;

@Test void salaireAnnuel() {

int salaireAnnuel = salaireMensuel *12 + prime;

assertEquals(23000, salaireAnnuel);

}

}

YoIl est aussi possible d’utiliser la notion d’import statique du JDK 1.5.

 

import static org.junit.Assert.assertEquals;

public class CalculerSalaireTest{

private int salaireMensuel = 1500 ;

private int prime = 5000;

 

@Test void salaireAnnuel() {

int salaireAnnuel = salaireMensuel *12 + prime;

assertEquals(23000, salaireAnnuel);

}

}

Cette approche permet de mieux tester les méthodes protected car la classe de test peut étendre la classe à tester.

 

 

 

 

 

 

par kasmi publié dans : Java
ajouter un commentaire commentaires (0)    créer un trackback trackback (1)    recommander
Jeudi 7 avril 2005

/**
* Methode permettant d'envoyer une requete HTTP à une URL en passant par un proxy
* avec des parametres et
* permettant de récupérer le flux de reponse.
*
*@Param String adresse URL distante
*@Param String parametre1
*@Param String parametre2
*/

public void EnvoyerRequetePost(String adresse, String param1, String param2){
   OutputStreamWriter writer = null;
   BufferedReader reader = null;
   try {
 // on precise le nom du proxy utilisé pour se connecter
 // à l'url distante, ainsi que le port.
 Properties prop = System.getProperties();
  prop.put("http.proxyHost","192.168.0.100");
  prop.put("http.proxyPort","80");

      // Constitution de la requete
       //encodage des paramètres de la requête - l'utilisatation de StringBuffres serait plus appropriées
       String donnees = URLEncoder.encode("param1", "UTF-8")+ "="+URLEncoder.encode("valeur1", "UTF-8");
       donnees += "&"+URLEncoder.encode("param2", "UTF-8")+"=" + URLEncoder.encode("valeur2", "UTF-8");

       //création de la connection à l'adresse distante
       URL url = new URL(adresse);
       URLConnection conn = url.openConnection();
       conn.setDoOutput(true);
     
      //envoi de la requête à l'adresse distante
       writer = new OutputStreamWriter(conn.getOutputStream());
       writer.write(donnees);
       writer.flush();

      //lecture de la réponse et ecriture dans la log
        reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String ligne;
        while ((ligne = reader.readLine()) != null) {
         System.out.println(ligne);
        }
   }catch (Exception e) {
      // affichage de la trace en cas d'exception
      e.printStackTrace();
   }finally{
      try{
  writer.close();
  }
      catch(Exception e){}
      try{
  reader.close();
         }
      catch(Exception e){}
   }
}

par mehdi kasmi publié dans : Java
ajouter un commentaire commentaires (0)    créer un trackback recommander

Calendrier

Mai 2008
L M M J V S D
      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  
<< < > >>
transfert de nom de domaine sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur avec TF1 Network - Signaler un abus