单元测试如何使用SmartGWT类?

时间:2012-03-02 18:27:56

标签: unit-testing gwt junit smartgwt jsni

在我们的SmartGWT Web应用程序中,我们将域对象从服务器传递到客户端并返回(通过GWT序列化)。要在DynamicForm或GridList中显示/编辑客户端的数据,我们必须将其转换为Record(或ListGridRecord),然后再编辑回我们的域对象。

我想为此转换方法编写单元测试,但是JUnit中的直接尝试失败,因为记录的getAttributesetAttribute方法是由{实现的{3}} / JSOHelper.getAttribute,它们是声明为native的静态方法,由JavaScript中的JSNI实现,因此在编译为JavaScript时只能在客户端使用。

我们在使用JUnit中的这些方法时遇到UnsatisfiedLinkError,因为那里没有实现本机方法。

我是如何测试这些课程的?

这些关键方法可以通过简单的HashMap(或者可能是LinkedHashMap,如果属性顺序很重要)轻松实现 - 实际上JavaScript对象就是这样,如果只查看数据部分,而不是方法。因此,我只考虑使用Java实现而不是JavaScript实现一些选定的SmartGWT类(主要是JSOHelper)的替代实现。

但我真的是第一个遇到这个问题的人吗?我找到现有的解决方案真是太愚蠢了吗?

1 个答案:

答案 0 :(得分:0)

如果您在代码中使用了MVP或MVC模式,只需使用类似mockito的内容模拟视图代码,并测试应用程序的所有其余部分。要测试视图代码,您需要使用类似Selinium的内容。我不认为gwtTestCase可以与smartGWT一起使用,因为它只是围绕js代码的gwt包装。