Assistant de test Java - SWTBot sans atelier


J'ai créé un assistant eclipse que je veux tester maintenant avec le SWTBot. J'ai déjà utilisé le SWTWorkbenchBot qui fonctionne enfin mais je veux tester l'assistant maintenant sans l'atelier eclipse. C'est pourquoi j'ai créé un shell dans ma testclass où je veux mettre sur ma wizardpage, mais tout ce que je pouvais voir, c'était une coquille vide sans ma wizardPage.

J'ai donc créé une nouvelle classe shell qui comprenait ce code:

public static void main(String args[]) {
    try {
        Display display = Display.getDefault();
        HorrorShell shell = new HorrorShell(display);
        shell.open();
        shell.layout();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) {
                display.sleep();
            }
        }
    }
    catch (Exception e) {
        e.printStackTrace();
    }
}

/**
 * Create the shell.
 * 
 * @param display
 */
public HorrorShell(Display display) {
    super(display, SWT.SHELL_TRIM);
    setLayout(new FillLayout());

    createContents();
}

/**
 * Create contents of the shell.
 */
protected void createContents() {
    setText("SWT Application");
    setSize(450, 300);
    ManualSettingsWizardPage page = new ManualSettingsWizardPage();
    page.createControl(this);
}

Avec la classe shell, cela fonctionne, ma page wizard a été affichée mais si j'essaie pour exécuter ma testclass en tant que SWTBotTest ou en tant que JUnitTest, il ne me montrera rien d'autre qu'une coquille vide. Voici le code dans ma classe de test:

private ManualSettingsWizardPage wizard;
private SWTBotShell botShell;
private Shell shell;
private Display display;
    private SWTBot bot;

@Before
public void setUp() {

    botShell = new SWTBotShell(shell);
    bot = new SWTBot();
    wizard = new ManualSettingsWizardPage();

    display = Display.getDefault();
    shell = new Shell(display);
    shell.open();
    shell.layout();

}

@Test
public void bot() throws Exception {
    bot = botShell.bot();
    shell.setBounds(200, 200, 400, 400);
    shell.setLayout(new FillLayout());

    wizard.createControl(shell);
}
Author: tanzverfuehrung, 2013-01-11

1 answers

Je pense que votre problème provient du fait que vous créez des composants GUI à partir du thread SWTBot. Ils devraient être créés par le UIThread, cependant.

Normalement, vous testeriez un plugin qui ouvrirait un assistant à la suite du choix d'une action, par exemple "new xyz". La première étape serait de mettre votre code assistant dans un plugin et d'enregistrer une nouvelle action qui déclencherait l'assistant. ensuite, vous pouvez essayer de trouver le shell avec SWTBot et d'exécuter les actions souhaitées.

 0
Author: Cpt. Senkfuss, 2013-03-05 15:36:17