2012-08-01 1 views
0

Comment obtenir le texte de description d'un assistant Eclipse à l'aide de SWTBot? La méthode wizard.shell.gettext() donne le titre, mais je n'ai trouvé aucune méthode pour obtenir la description. J'en ai besoin pour vérifier la description et les messages d'erreur affichés sur la page de l'assistant.Comment obtenir la description de l'assistant à l'aide de SWTBot?

Répondre

0

comme solution de contournement, j'ai utilisé ce code

public void verifyWizardMessage(String message) throws AssertionError{ 
    try{ 
     bot.text(" "+message); 
    }catch(WidgetNotFoundException e){ 
     throw (new AssertionError("no matching message found")); 
    } 
} 

ici bot est une instance de SWTBot disponible aux messages de l'assistant method.The prepends automatiquement un espace dans le champ de description, donc je suis à l'aide " "+message. J'espère que cela aidera

0

Afin de tester nos plug-ins d'éclipse, l'équipe avec laquelle j'ai travaillé a développé un DSL personnalisé au-dessus de SWTBot pour représenter les assistants, les boîtes de dialogue et ainsi de suite. Voici un extrait de code qui fonctionne bien dans notre cas (méfiez-vous que cela pourrait être la version Eclipse dépendante, semble OK avec Eclipse 3.6 et 4,2)

class Foo { 

    /** 
    * The shell of your dialog/wizard 
    */ 
    private SWTBotShell shell; 

    protected SWTBotShell getShell() { 
     return shell; 
    } 

    protected <T extends Widget> T getTopLevelCompositeChild(final Class<T> clazz, final int index) { 
     return UIThreadRunnable.syncExec(shell.display, new Result<T>() { 

      @SuppressWarnings("unchecked") 
      public T run() { 
       Shell widget = getShell().widget; 
       if (!widget.isDisposed()) { 
        for (Control control : widget.getChildren()) { 
         if (control instanceof Composite) { 
          Composite composite = (Composite) control; 
          int counter = 0; 
          for (Control child : composite.getChildren()) { 
           if (clazz.isInstance(child)) { 
            if (counter == index) { 
             return (T) child; 
            } 
            ++counter; 
           } 
          } 
         } 
        } 
       } 
       return null; 
      } 
     }); 
    } 

    /** 
    * Returns the wizard's description or message displayed in its title dialog 
    * area. 
    * 
    * A wizard's description or message is stored in the very first Text widget 
    * (cf. <tt>TitleAreaDialog.messageLabel</tt> initialization in 
    * <tt>org.eclipse.jface.dialogs.TitleAreaDialog.createTitleArea(Composite)</tt> 
    *). 
    * 
    */ 
    public String getDescription() { 
     final Text text = getTopLevelCompositeChild(Text.class, 0); 
     return UIThreadRunnable.syncExec(getShell().display, new Result<String>() { 

      public String run() { 
       if (text != null && !text.isDisposed()) { 
        return text.getText(); 
       } 
       return null; 
      } 
     }); 
    } 
} 
Questions connexes