2009-12-15 22 views
1

Je lance un test Junit sur mon application Eclipse qui a été créée à l'aide de SWT. Je fais des tests GUI en utilisant SWTBot. Donc, voici mon problème:Gestion des boîtes de dialogue SWT pendant l'exécution de tests en mode sans tête à l'aide de SWTBOT

editor.bot().button("Make Excel Template").click();

Ce code me permet de générer un modèle dans ma demande. Une fois terminé, il affiche un dialogue modal avec "OK" comme message. Cependant, je ne peux pas obtenir SWTBot pour trouver ce bouton/widget/boîte de dialogue. Je reçois toujours une 'WidgetNotFoundException'.

Est-ce que quelqu'un est tombé dessus? Le contenu officiel sur le site Web SWTBot indique que les boîtes de dialogue doivent être exécutées dans des threads non-UI séparés. Les exemples fournis ne sont cependant pas très informatifs.

Appréciez votre aide!

Répondre

0

@carstenlez - votre solution fonctionne bien pour les boîtes de dialogue JFace. Mon application, cependant, utilise un MessageBox - qui est un dialogue natif. SWTBot ne prend pas en charge les boîtes de dialogue natives, je n'ai donc pas beaucoup d'options.

+0

Pour être plus précis - il n'y a pas d'options faciles. Je n'ai pas creusé dans le code, mais je pense que vous pouvez essayer de remplacer le wrapper Java de ce dialogue natif et l'implémentation simulée. Bien sûr, le test ne serait pas complet, mais tester l'interface graphique native sous-jacente ne fait pas partie des tests unitaires de toute façon. –

0

Vous devez d'abord exécuter vos tests dans un thread non-UI (si ce n'est déjà fait). Deuxièmement, vous pouvez utiliser une condition d'attendre votre boîte de dialogue modale apparaisse après l'exécution de l'action qui apportera la boîte de dialogue jusqu'à:

bot.waitUntil(Conditions.shellIsActive("This is the title of the modal dialog ")); 
bot.button("OK").click(); 

Ceci a résolu nos problèmes de synchronisation.