FrameWork TestNG : Exemple d’utilisation sur WSAD

Nous allons utiliser TestNG pour vérifier le fonctionnement de la couche Service, DAO, JPA et Hibernate, pour faire ça nous avons écris cette classe de test :

package odas.toolbox.testng.test;

import java.text.ParseException;
import java.util.List;

import odas.toolbox.persistance.jpa.hibernate.model.P70paramet;
import odas.toolbox.persistance.service.IService;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;



public class TestNG {
//       couche service
        private IService service;

        @BeforeClass
        public void init() {
                // log
                log("init");
                // configuration de l'application
                ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-config.xml");
                // couche service
                service = (IService) ctx.getBean("service");
        }

        @BeforeMethod
        public void setUp() throws ParseException {
                // on vide la base
                clean();
                // on la remplit
                fill();
        }

        // logs
        private void log(String message) {
                System.out.println("----------- " + message);
        }

        // affichage contenu table
        private void dump() {
                log("dump");
                System.out.format("[personnes]%n");
                for (P70paramet p : service.getAll()) {
                        System.out.println(p);
                }
        }

        // remplissage table
        public void fill() throws ParseException {
                log("fill");
                // création personnes
                P70paramet p1 = new P70paramet();
                P70paramet p2 = new P70paramet();
                // qu'on sauvegarde
                service.saveArray(new P70paramet[] { p1, p2 });
        }
        // supression éléments de la table
        public void clean() {
                log("clean");
                for (P70paramet p : service.getAll()) {
                        service.delete(p.getP70idpkpar());
                }
        }
        @Test()
        public void test01() {
                log("test1");
                //dump();
                // liste des personnes
                List<P70paramet> parametres = service.getAll();
                assert 119 == parametres.size();
        }
}

L’annotation @BeforeClass désigne la méthode à exécuter pour initialiser la configuration nécessaire aux tests. Elle est exécutée avant que le premier test ne soit exécuté. L'annotation @AfterClass non utilisée ici, désigne la méthode à exécuter une fois que tous les tests ont été exécutés.

La méthode init annotée par @BeforeClass exploite le fichier de configuration de Spring pour instancier les différentes couches de l'application et avoir une référence sur la couche [service]. Tous les tests utilisent ensuite cette référence.

L'annotation @BeforeMethod désigne la méthode à exécuter avant chaque test. L'annotation @AfterMethod, non utilisée ici, désigne la méthode à exécuter après chaque test.

La méthode setUp annotée par @BeforeMethod vide la base de données

L'annotation @Test désigne une méthode de test à exécuter.

Cet article est régulièrement mis à jour par des experts sous la
direction de Jean-François Pillou, fondateur de CommentCaMarche.
Ce document intitulé « FrameWork TestNG : Exemple d’utilisation sur WSAD » issu de Comment Ça Marche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.