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

JSF Java Discussion :

Quels frameworks de test utilisez-vous ?


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    456
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 456
    Par défaut Quels frameworks de test utilisez-vous ?
    Salut

    Comme il y a peu de documentation sur ce sujet, je reviens vers vous pour avoir vos feedbacks sur des frameworks de tests pour tester des applications JSF, Icefaces, Richefaces ...

    Perso, j'utilise pour tester mon appli Icefaces, HtmlUnit c'est pas mal, mais je suis très limité quand c'est question de tester un composant un peu complexe. La par exemple je cale sur le test de deux data table imbriquées. C'est vraiment pas fait pour ca je pense.
    Il y a JSFUnit qui apparemment permet de tester les composants JSF, mais avec une petite recherche sur google concernant mon cas. j'ai remarqué qu'il engendre des des conflits entre icefaces et jsf. Des erreurs liées au javascript aussi.

    Pourriez me donner vos retours d'expériences concernant ce sujet ?

    Et si quelqu'un à deja utilisé Htmlunit pour faire des tests poussés sur des composants icefaces, richefaces ou autre. ca serait bien s'il me montre comment il a procédé

    Merci

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    pour tester les bean jsf, j'utilise des outils de type comme shale-test, qui fournissent des implémentation Mock des composants JSF et qui me permettent de tester les bean, les EL etc (tout ce qui n'est pas HTML) sans avoir besoin d'un conteneur web (rapide et léger à lancer tout ça). Pour le reste (tester les comportement visuels), j'utilise Selenium, qui permet de lancer directement les teste à travers un browser web (firefox ou IE) après avoir déployé un webapp de test sur un serveur de test.

    En pratique, pour cette phase, on a un projet maven2 'test' de type WAR, et dans l'intégration-test on a un combinaison de Selenium server, cargo (pour démarrer un tomcat de test) et des unit tests qui ressemblent à çà:

    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
     
     
    import junit.framework.TestCase;
     
    import com.thoughtworks.selenium.DefaultSelenium;
    import com.thoughtworks.selenium.SeleneseTestCase;
    import java.util.regex.Pattern;
     
    public class TextAndDocsParameterTest extends SeleneseTestCase {
            protected DefaultSelenium createSeleniumClient(String url) throws Exception {
                    return new DefaultSelenium("localhost", 4444, "*firefox", url);
            }
            public void setUp() throws Exception {
                    selenium=createSeleniumClient("http://localhost:6969/");
                    selenium.start();
            }
            public void tearDown() throws Exception {
                    selenium.stop();
            }
            protected boolean isCaptureScreetShotOnFailure() {return true;}
     
        public void testTextAndDocument() throws Exception {
                    selenium.open("test-site/test/HtmlTextAndDocsParameterRenderer.faces");
                    assertTrue(selenium.isElementPresent("parameterTestForm:edit:comment"));
                    assertTrue(selenium.isTextPresent("Obvious textgoogle (be)google (com)google (uk)"));
                    assertTrue(selenium.isElementPresent("parameterTestForm:edit:add"));
                    assertTrue(selenium.isElementPresent("parameterTestForm:edit:0:delete"));
                    assertTrue(selenium.isElementPresent("parameterTestForm:edit:1:delete"));
                    verifyTrue(selenium.isElementPresent("parameterTestForm:edit:2:delete"));
                    assertEquals("google (be)", selenium.getText("link=google (be)"));
                    assertTrue(selenium.isElementPresent("link=Modifier ce document"));
                    assertTrue(selenium.isElementPresent("link=google (com)"));
                    assertTrue(selenium.isElementPresent("//a[@onclick=\"if (showBlock('parameterTestForm:edit:1:edit')) removeElementContent('parameterTestForm:edit:1:show'); return false;\"]"));
                    assertTrue(selenium.isElementPresent("link=google (uk)"));
                    assertTrue(selenium.isElementPresent("//a[@onclick=\"if (showBlock('parameterTestForm:edit:2:edit')) removeElementContent('parameterTestForm:edit:2:show'); return false;\"]"));
                    selenium.type("parameterTestForm:edit:comment", "text and document test");
                    selenium.click("parameterTestForm:edit:add");
                    assertTrue(selenium.isElementPresent("parameterTestForm:edit:3:name"));
                    assertTrue(selenium.isElementPresent("parameterTestForm:edit:3:uploadedDocument"));
                    assertTrue(selenium.isElementPresent("parameterTestForm:edit:3:uploadedDocument"));
                    assertTrue(selenium.isElementPresent("parameterTestForm:edit:3:update"));
                    assertTrue(selenium.isTextPresent("Nom"));
                    assertTrue(selenium.isTextPresent("Envoyer un fichier"));
                    assertTrue(selenium.isTextPresent("Type de document"));
                  assertTrue(selenium.isElementPresent("document.parameterTestForm.elements['parameterTestForm:edit:3:DocumentType'][1]"));
                    assertTrue(selenium.isElementPresent("parameterTestForm:edit:3:DocumentType"));
                    assertTrue(selenium.isElementPresent("document.parameterTestForm.elements['parameterTestForm:edit:3:DocumentType'][2]"));
     
            }
    }
    Seules limitations rencontrées avec selenium:
    1. Pas possible de tester les fileupload (selenium travaillant en javascript)
    2. on ne peux rien faire sur la machine pendant ce temps (envahie de fenetre firefox pendant quelques minutes)
    3. Les adminitrateur système veulent t'effacer ce virus qui affiche des popups :p
    4. Compiler le war + démarrer tomcat, même si c'est automatique dans le test, ca prend du temps (quelques minutes)
    5. si tu teste trop fort ton composant, tu dois changer régulièrement tes tests (en particulier si les ids changent souvent, selenium se basant fortement là dessus)


    j'avais testé à une époque des framework du type HttpUnit, mais c'est vraiment mal adapté (pas de test de javascript, analyse du html brut nécessaire, le moindre changement dans le html fait sauter le test, pas de garantie visuelle).

    Cerise sur le gateau, les unit test selenium peuvent faire un capture d'écran lors du failure du test (non seulement tu sais quoi foire, mais tu sais ce qu'il y avait à l'écran à ce moment là :p)

  3. #3
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    456
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 456
    Par défaut
    Merci beaucoup pour ta reponse,

    J'avais vu un peu selenuim mais vite fait, j'avais preferer utiliser HtmlUnit croyant que c'est plus pratique par ce qu'il est a priori plus utiliser...


    En tous cas je vais me lancer dans tests plus pousser avec Selenium, j'espere qu'il pourra me tester mes data table


    Merci encore

  4. #4
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Il existe aussi JSF Unit de JBoss, mais je ne l'ai jamais essayé. Quelqu'un a un retour à faire sur l'outil ?
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  5. #5
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    456
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 456
    Par défaut
    Salut tchize_,

    Est ce que tu aurais un peu de doc sur Shale ? a part la doc du site officiel. Car sur leur site je ne vois pas par ou commencer, de mon humble avis je trouve que c'est mal organisé pour quelqu'un qui ne sait absolument rien du tout sur Shale ou les implementations Mock

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    non j'ai pas de doc. J'ai juste utilise la javadoc pour voir quelles classes existaient et les manipuler. Le reste, comme c'est juste des bêtes classes, ca a pas été trop dur (pas de config particulière à faire, etc)


    http://shale.apache.org/shale-test/apidocs/index.html

Discussions similaires

  1. Réponses: 13
    Dernier message: 15/10/2019, 01h44
  2. [Sondage] Quels plugins pour Eclipse utilisez-vous ?
    Par xavlours dans le forum Eclipse
    Réponses: 75
    Dernier message: 13/07/2014, 15h58
  3. Réponses: 43
    Dernier message: 10/01/2013, 17h54
  4. Réponses: 145
    Dernier message: 15/02/2009, 11h51
  5. Réponses: 7
    Dernier message: 23/11/2006, 15h11

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