1

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

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

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

有什么想法可以测试这些课程吗?

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

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

4

1 回答 1

0

如果您在代码中使用了 MVP 或 MVC 模式,只需使用mockito之类的东西来模拟视图代码并测试应用程序的所有其余部分。要测试视图代码,您将需要使用 Selinium 之类的东西, 认为 gwtTestCase 不能与 smartGWT 一起使用,因为它只是 js 代码的 gwt 包装器。

于 2012-03-02T20:30:07.427 回答