如果您希望单独测试 GWT 小部件,那么选择并不多。您可以使用 GWTTestCase 实例化您的小部件并通过其 API 对其进行测试,这就是 Google 为 GWT 小部件本身所做的事情:RadioButtonTest 的源
但是,事件触发机制在 GWTTestCases 中不起作用,这意味着您不能以编程方式单击按钮并期望在侦听器上调用某些 onClick() 回调方法。即使不是不可能,也很难获得底层 DOM,因此它可能不是测试低级 HTML 发射代码的最佳工具。
听起来您正在遵循所有正确的步骤;Rob 的文章很好地描述了如何使用 Model-View-Presenter (MVP) 设计模式编写可测试的代码。您在视图层之外保留的逻辑越多越好。如果无法做到这一点,请使用 Selenium 之类的工具来创建动态 UI 行为的集中测试。
我遵循了类似的策略——小部件中代码最少的 MVP。在少数情况下,我确实编写了一些代码来包装 Grid 类,因此我能够在 GWTTestCase 中实例化我的组件,将其传递给 Grid,在我的组件上调用一些方法,并检查 Grid 的状态。我为 Better Software 写了一篇关于 Test-First GWT 的文章,您可以在我的博客上阅读。
如果您要测试使用非 UI GWT 类(例如 URL 编码或字典)的代码,则需要使用 GWTTestCase,或者遵循类似的包装策略,直到代码太简单而无法破解。然后使用 Selenium 之类的工具或一些目标 GWTTestCases 进行集成测试,这些工具仅测试您是否正确使用了该库——正如 JB Rainsberger 所说,“不要测试框架!”