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

Java Discussion :

JUnit et JOptionPane


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 32
    Par défaut JUnit et JOptionPane
    Bonjour,

    J'ai un problème avec un test JUnit.

    Le test clique sur un JButton qui ouvre un JOptionPane via l'appel à la méthode JOptionPane.showMessageDialog(...).

    Lorsque j'exécute ce test, il se bloque sur cet appel (le JOptionPane est affiché).

    Comment faire pour contourner ce problème, sachant que je ne peux pas modifier le code du bouton ?

    Merci d'avance.

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2010
    Messages : 394
    Par défaut
    Citation Envoyé par rocklass Voir le message
    Comment faire pour contourner ce problème, sachant que je ne peux pas modifier le code du bouton ?
    A part cliquer sur le bouton de la popup, je ne suis pas sûr que l'on puisse contourner le problème...

    Par contre, je me demande s'il est normal de lancer un JOptionPane(élément graphique, attendant une action de l'utilisateur qui plus est) dans le cadre d'un JUnit (test unitaire).

    Mako.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 32
    Par défaut
    Citation Envoyé par Mako 5013 Voir le message
    A part cliquer sur le bouton de la popup, je ne suis pas sûr que l'on puisse contourner le problème...

    Par contre, je me demande s'il est normal de lancer un JOptionPane(élément graphique, attendant une action de l'utilisateur qui plus est) dans le cadre d'un JUnit (test unitaire).

    Mako.
    Mon test JUnit n'est pas un test unitaire mais un test fonctionnel. Il simule les actions de l'utilisateur sur une application basée sur une IHM Swing. Il clique donc sur un bouton. C'est l'ActionListener associé à ce bouton qui lance le JOptionPane, pas directement le code JUnit.

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2010
    Messages : 394
    Par défaut
    Citation Envoyé par rocklass Voir le message
    Mon test JUnit n'est pas un test unitaire mais un test fonctionnel.
    Je pense que c'est une utilisation de JUnit qui n'est pas adaptée.

    Tu peux simuler un clic de la souris à partir de la classe Robot.java. Via un autre thread, tu fais un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    robot.mouseClick(abscisse, ordonnee);
    Par contre, cela implique de connaître la position à l'écran de ton bouton (et si tu dois lancer ton test sur différents postes, avec des résolutions différentes, c'est le drame).

    C'est moche, mais je ne vois pas comment faire autrement.

    Mako.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 32
    Par défaut
    Citation Envoyé par Mako 5013 Voir le message
    Je pense que c'est une utilisation de JUnit qui n'est pas adaptée.

    Tu peux simuler un clic de la souris à partir de la classe Robot.java. Via un autre thread, tu fais un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    robot.mouseClick(abscisse, ordonnee);
    Par contre, cela implique de connaître la position à l'écran de ton bouton (et si tu dois lancer ton test sur différents postes, avec des résolutions différentes, c'est le drame).

    C'est moche, mais je ne vois pas comment faire autrement.

    Mako.
    Non mais je pense que c'est facilement faisable, je récupère le composant avant de cliquer dessus. Je peux donc récupérer sa position sur l'écran pour cliquer dessus. Je vais tester le robot et je dirai si mon problème est résolu.

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    1 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 190
    Par défaut
    Je plussoie, Junit n'est pas fait pour les tests sur les IHMs!
    Il est fait pour tester tes services. Sinon on parle là de test automatique d'IHM.

  7. #7
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2010
    Messages : 394
    Par défaut
    Citation Envoyé par rocklass Voir le message
    Non mais je pense que c'est facilement faisable, je récupère le composant avant de cliquer dessus. Je peux donc récupérer sa position sur l'écran pour cliquer dessus. Je vais tester le robot et je dirai si mon problème est résolu.
    Je ne suis pas sûr que cela soit si facile. Il me semble (mais je peux me tromper), que tu n'as pas accès aux coordonnées de l'écran, mais aux coordonnées "de Java".

    Ainsi, si tu bouges ta fenêtre sur l'écran, les coordonnées sur l'écran de ton bouton vont bouger, mais pas celles de Java (liées au référentiel de la frame principale).

    Mako.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. JOptionPane et JScrollPane
    Par calypso dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 15/06/2004, 11h25
  2. [Débutante] JInternalFrame et JOptionPAne
    Par ju972 dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 24/05/2004, 14h03
  3. [JUnit] NoClassDefFoundError:junit/framework/TestCase
    Par Adjanakis dans le forum Tests et Performance
    Réponses: 4
    Dernier message: 14/04/2004, 13h23
  4. Réponses: 3
    Dernier message: 09/04/2004, 23h35
  5. [SWT]équivalent des JOptionPane Swing
    Par Le Marlou dans le forum SWT/JFace
    Réponses: 1
    Dernier message: 18/02/2004, 10h56

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