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

Struts 1 Java Discussion :

Junit et DynaActionForm


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 32
    Par défaut Junit et DynaActionForm
    Bonjour,

    Je réalise des tests Junit sur des servlet. Mon servlet à besoin d'analyser un formulaire. Mon formulaire est un formulaire dynamique défini dans mon fichier struts-config.

    Dans mon test Junit je dois donc hardcoder une instance de mon formulaire. Le code ressemble à ça:

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    FormBeanConfig form = new FormBeanConfig();
    FormPropertyConfig property = new FormPropertyConfig();
    property.setName("submit");
    property.setType("java.lang.String");
    form.addFormPropertyConfig(property);
     
    //FIXME: nullpointer exception
    form.setProperty("submit", null);

    seulement lorsque je veux utiliser la méthode setProperty, un nullpointer exception se déclanche.

    D'ou ma premiére question: comment utiliser les formulaires dynamiques dans un test junit?

    En cherchant sur le web anglophone j'ai lu qu'il fallait appeller deux actions struts dans le test: une pour créer le formulaire et une pour seter ses propriétés.

    Comment peut-on procéder?

  2. #2
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 32
    Par défaut
    Bon, il semblerait que j'ai réussi à créer mon formulaire. Je posterais le code quand j'aurais pu tester.

    En revanche impossible de l'associer à mon test, pour ça il y a une méthode, setAction form:

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    setRequestPathInfo(MODULE,URL);
    setActionForm(form);
    actionPerform();
    verifyForwardPath(FORWARD_PATH);
    verifyNoActionErrors();

    Mais quand je lance mon test j'obtiens cette stacktrace:

    java.lang.NoSuchMethodError: org.apache.struts.util.RequestUtils.selectModule(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/ServletContext; )V
    at servletunit.struts.Common.setActionForm(Common.java:493)
    at servletunit.struts.MockStrutsTestCase.setActionForm(MockStrutsTestCase.java:888)
    at org.dgme.rita.web.action.home.AcceptChartTest.testSuccessfull(AcceptChartTest.java:47

    (j'ai enlevé la fin pour rester compréhensible)

    Est-ce que quelqu'un à déja utilisé les tests Junit, car ça doit tout de même être un problème fréquent...

  3. #3
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    C'est simple tu as un gros probleme.
    JE sais pas comment tu construis ton form mais le probleme vient de la!


    Quand tu auras mis le code qui va plus haut dans ce que tu as mis je saurais peut-etre te dire la solution.

  4. #4
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 32
    Par défaut
    Voici donc la maniére dont je construit mon formulaire.

    Code java : 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
     
    FormBeanConfig form = new FormBeanConfig();
     
    form.setType("org.apache.struts.action.DynaActionForm");
     
    form.setName("BusinessServiceForm");
    FormPropertyConfig property = new FormPropertyConfig();
    property.setName("submit");
    property.setType("java.lang.String");
    form.addFormPropertyConfig(property);
     
    form.setProperty("submit", "delete");
     
    DynaActionFormClass dynaClass = form.getDynaActionFormClass();
     
    try
    {
    DynaActionForm dynaForm = (DynaActionForm)dynaClass.newInstance();
     
    setRequestPathInfo(MODULE, URL);
    setActionForm(actionForm);
    actionPerform();
    }
    catch (InstantiationException e)
    {
    LOG.fatal("InstanciationException: " + e.toString()); 
    }
    catch (IllegalAccessException e)
    {
    LOG.fatal("IllegalAccessException: " + e.toString()); 
    }

  5. #5
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Et ton formulaire il est lié a une action? OU tu as seuleument un formulaire?
    Car si tu as une action il ne sert a rien de mettre le formulaire en parametre mais plutot et surtout le path de l'action (comme dans un navigateur quoi)

  6. #6
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 32
    Par défaut
    Oui, mon action est dans le try:

    setRequestPathInfo(MODULE, URL);
    actionPerform();

    MODULE et URL sont des variables statiques qui représente mon module struts et le nom de mon action.

  7. #7
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Citation Envoyé par maxf1
    Et ton formulaire il est lié a une action? OU tu as seuleument un formulaire?
    Car si tu as une action il ne sert a rien de mettre le formulaire en parametre mais plutot et surtout le path de l'action (comme dans un navigateur quoi)

    Voila ce que je t'avais dit si tu lisais jusqu'au bout tu aurais peut-etre trouvé tout de suite.


    Sinon je vois pas le probleme pour les addRequestParameter c'est des parametres qu'on envoie, non? Le formulaire est envoyé automatiquement donc je ne comprend pas...

Discussions similaires

  1. [Struts][DynaActionForm et persistance des objets]
    Par jcos dans le forum Struts 1
    Réponses: 4
    Dernier message: 22/12/2004, 09h15
  2. Equivalent à JML / JUnit pour le C++
    Par meuns dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 09/12/2004, 15h16
  3. [JUnit] Junit écriture dans un fichier
    Par mikael35 dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 10/08/2004, 13h11
  4. [JUnit] NoClassDefFoundError:junit/framework/TestCase
    Par Adjanakis dans le forum Tests et Performance
    Réponses: 4
    Dernier message: 14/04/2004, 13h23
  5. Réponses: 3
    Dernier message: 09/04/2004, 23h35

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