jeudi 22 mars 2012

JUnit 4 en 60 secondes

junit-logo.png

Comme l'actualité est calme, voici la traduction un peu enrichie d'un article d'introduction à JUnit 4 à consulter ici.

JUnit 4 apporte à JUnit la gestion des annotations pour les tests Java. Voyons-en quelques unes....

@Test

Permet de marquer vos tests. Vous n'avez alors plus besoin de préfixer vos cas de tests avec "test". De plus, votre classe n'a plus besoin d'hériter de la classe “TestCase”.

  @Test
  public void addition() {
     assertEquals(12, simpleMath.add(7, 5));
  }
  
  @Test
  public void subtraction() {
     assertEquals(9, simpleMath.substract(12, 3));
  }

@Before et @After

Utilisez respectivement les annotations @Before et @After pour les méthodes “setup” et “tearDown”. Ces méthodes sont exécutées respectivement avant et après chaque cas de test.

  @Before
  public void executerAvantChaqueTest() {
     simpleMath = new SimpleMath();
  }

Ici, on vient de préparer le "monde" du test.

  @After
  public void executerApresChaqueTest() {
     simpleMath = null;
  }

Et là, on nettoie une fois le test exécuté.



@BeforeClass et @AfterClass

Utiliser respectivement les annotations @BeforeClass et @AfterClass pour les méthodes “setup” et “tearDown” s'appliquant à la classe toute entière. Pnsez à ces méthodes comme étant à usage unique. Elles s'exécutent respectivement et une seule fois avant le premier cas de test et après le dernier cas de test.

  @BeforeClass
  public static void executeBeforeClass() {
     // s'exécute une unique fois 
     //avant le premier cas de tests
  }
  @AfterClass
  public static void executeAfterClass() {
     // s'exécute une unique fois pour toute
     //  après le dernier cas de tests
  }

Gestion des exceptions



Utilisez le paramètre “expected” avec l'annotation @Test pour indiquer que le cas de test s'attend à une exception. Donnez le nom de l'exception qui va être lancée.

  @Test(expected = ArithmeticException.class)
  public void divisionAvecException() {
     // division par zero
     simpleMath.divide(1, 0);
  }

@Ignore



Ajouter l'annotation @Ignore pour les cas de tests que vous voulez ignorer. Vous pouvez ajouter comme paramètre une chaîne de caractères qui indique la raison pour laquelle vous ignorez le test.

  @Ignore(“Pas prêt à fonctionner”)
  @Test
  public void multiplication() {
     assertEquals(15, simpleMath.multiply(3, 5));
  }

Timeout



Définit un délai d'expiration en millisecondes avec le paramètre “timeout”. Le test échouera si le délai est atteint.

  @Test(timeout = 1000)
  public void infinity() {
     while (true)
     ;
  }

Nouvelles affirmations

Ces nouvelles affirmations permettent de comparer des tableaux. Deux tableaux sont égaux seulement s'ils ont la même longueur et si chaque élément de l'un est égal à l'élément correspondant de l'autre.

  public static void assertEquals(Object expected, Object actual);
  public static void assertEquals(String message, Object expected, Object actual);
  @Test
  public void listEquality() {
     List expected = new ArrayList();
     expected.add(5);
     
     List actual = new ArrayList();
     actual.add(5);
     
     assertEquals(expected, actual);
  }

JUnit4Adapter

Permet d'exécuter vos tests JUnit 4 dans les lanceurs de tests JUnit 3 avec le JUnit4Adapter

  public static junit.framework.Test suite() {
     return new JUnit4TestAdapter(SimpleMathTest.class);
  }

mardi 14 février 2012

La version 1.2.3 de PHPUnit_Selenium est sortie

selenium-logo.png PHP

PHPUnit est l'équivalent pour PHP de JUnit pour Java. Framework très abouti, utilisant même des annotations, il permet de plus de s'interfacer avec Selenium pour tester des applications Web. Depuis la version 1.2.0, il prend maintenant en compte l'API WebDriver en ajoutant la classe PHPUnit_Extensions_Selenium2TestCase ainsi que:

  • le partage de session pour l'API WebDriver
  • l'ouverture d'URL et la sélection d'élément pour l'API WebDriver
  • le clic d'éléments et le raccourci clickOnElement($id) pour l'API WebDriver
  • le support partiel de 'alert()' pour l'API WebDriver
  • la manipulation d'éléments pour l'API WebDriver: accesseur de test, modificateurs de valeurs
  • les sélecteurs raccourcis `by*()` pour l'API WebDriver
  • l'extraction d'une classe de commande de base pour étendre les commandes gérées des sessions et des éléments pour l'API WebDriver

Viennent donc de sortir coup sur coup les versions 1.2.2 et 1.2.3 qui vient réparer un petit oubli de la 1.2.2.

Lire la suite...