测试GWT代码的最佳方法是什么

测试GWT代码的最佳方法是什么,gwt,Gwt,测试GWT代码的最佳方法是什么 托管模式下的GWTTestCase太慢,所有模拟框架都无法工作 目前,我们正在按照中的建议使用MVC,并使用GWTMockUtilities disarm()和restore()来模拟小部件。我们还没有找到在GWT MVC中测试视图的方法。是否有更好的方法来测试GWT代码?如果您希望单独测试GWT小部件,那么没有太多选项。您可以使用GWTTestCase来实例化您的小部件,并通过其API对其进行测试,这是Google为GWT小部件本身所做的: 但是,事件触发机制在

测试GWT代码的最佳方法是什么

托管模式下的GWTTestCase太慢,所有模拟框架都无法工作


目前,我们正在按照中的建议使用MVC,并使用GWTMockUtilities disarm()和restore()来模拟小部件。我们还没有找到在GWT MVC中测试视图的方法。是否有更好的方法来测试GWT代码?

如果您希望单独测试GWT小部件,那么没有太多选项。您可以使用GWTTestCase来实例化您的小部件,并通过其API对其进行测试,这是Google为GWT小部件本身所做的:

但是,事件触发机制在GWTTestCase中不起作用,这意味着您不能通过编程方式单击按钮并期望在侦听器上调用某些onClick()回调方法。即使不是不可能,也很难获得底层DOM,因此它可能不是测试低级HTML代码的最佳工具

听起来你在遵循所有正确的步骤;Rob的文章很好地描述了如何使用Model View Presenter(MVP)设计模式编写可测试代码。在视图层之外保留的逻辑越多越好。如果不可能,请使用Selenium之类的工具创建动态UI行为的重点测试

我遵循了类似的策略——MVP,在小部件中使用最少的代码。在一些情况下,我确实编写了一些代码来包装网格类,因此我能够在GWTTestCase中实例化我的组件,将其传递给网格,调用组件上的一些方法,并检查网格的状态。我为Better Software写了一篇关于Test First GWT的文章,您可以阅读

如果您希望测试使用非UI GWT类(如URL编码或字典)的代码,则需要使用GWTTestCase,或者遵循类似的包装策略,直到代码过于简单而无法分解为止。然后使用Selenium之类的工具进行集成测试,或者使用一些只测试您是否正确使用了库的目标GWTTestCase——正如J.B.Rainsberger所说,“不要测试框架!”

什么对我有效:

使用经典模型/视图/控制器(例如,视图或控制器中没有业务逻辑;控制器仅将视图事件转换为模型上的方法调用)

将模型和控制器代码与GWT视图小部件以及任何其他依赖GWT且无法在普通旧JVM中实例化的类解耦。然后,您可以使用好的老JUnit测试它们

编写端到端测试,通过GUI测试系统,以确保模型和控制器正确连接到视图。我们发现部署和启动应用程序,然后通过由JUnit和WebDriver控制的浏览器与之交互比使用GWTTestCase更快


使用JMock测试异步调用,如下所示:。

还可以将read at

作为一个示例,您应该尝试,它可以在独立的JVM中运行GWT客户机代码,并提供一些功能来模拟您想要的任何东西(组件、RPC服务等)

尝试使用GWT test utils。但它在加载JavaScriptObject子类和修补程序实例时给出:java.lang.RuntimeException:错误。。关于运行我在Eclipse中使用JMock的一些GWT JUnit测试所需的注意事项,任何想法都可以向我的2美分建议:我需要将GWT-dev.jar添加到一些使用JMock的特定JUnit测试类的类路径中;在这样做之前,这些类有以下错误:java.lang.NoClassDefFoundError:com/google/gwt/core/shared/GWTBridge