2009-12-15 70 views
1

我在使用SWT构建的eclipse应用程序上运行Junit测试用例。我正在使用SWTBot进行GUI测试。所以,这里是我的问题:使用SWTBOT在无头模式下运行测试时处理SWT对话框

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

此代码可以帮助我产生在我的应用程序的模板。一旦完成,它会抛出一个带有“OK”的模态对话框作为消息。但是,我无法让SWTBot找到这个按钮/控件/对话框。我不断收到'WidgetNotFoundException'。

有人遇到过这个吗? SWTBot网站上的官方内容表示,对话框应该在单独的非UI线程中运行。然而,所提供的例子并不是很丰富。

感谢您的帮助!

回答

0

@carstenlez - 您的解决方案适用于JFace对话框。然而,我的应用程序正在使用一个MessageBox - 这是一个本地对话框。 SWTBot不支持本机对话框,所以我几乎没有选择。

+0

更确切地说 - 没有简单的选择。我没有深入研究代码,但我想你可能会尝试替换该本机对话的Java包装和模拟实现。确保测试不会完成,但测试底层原生GUI并不是单元测试的一部分。 – 2010-03-24 04:43:28

0

首先,您应该在非UI线程中运行测试(如果尚未这样做的话)。 其次,你可以使用条件等待执行,将带来的对话框了行动后出现的模态对话框:

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

这解决了我们的时间问题。

相关问题