我想编写一个 gwt-test-utils 测试来测试我创建的复合小部件。在花了一些时间开始之后,JUnit 测试终于开始了,我可以初始化小部件,甚至可以访问私有字段。
然而,这里是显示停止器:我的小部件使用另一个扩展的小部件ComplexPanel
。每当我尝试调用它的insertChild
方法时,我都会收到以下异常
java.lang.UnsatisfiedLinkError: com.google.gwt.user.client.impl.DOMImplStandard.insertChild(Lcom/google/gwt/user/client/Element;Lcom/google/gwt/user/client/Element;I)V at com.google.gwt.user.client.impl.DOMImplStandard.insertChild(Native Method) 在 com.google.gwt.user.client.impl.DOMImplMobileSafari.insertChild(DOMImplMobileSafari.java:26) 在 com.google.gwt.user .client.DOM.insertChild(DOM.java:958) 在 com.google.gwt.user.client.ui.ComplexPanel.insert(ComplexPanel.java:203) [...]
我阅读了 gwt-test-utils 的 Patcher API 并查看了它的源代码。DOMImplStandard
延伸DOMImpl
。有一个 PatchClass forDOMImpl
和一个 PatchMethod for insertChild
( DOMImplUserPatcher
)。但由于某种原因,补丁似乎对我不起作用。我尝试编写自己的补丁DOMImpl.insertChild
,结果导致
com.googlecode.gwt.test.exceptions.GwtTestPatchException:为同一目标检测到 2 个 @PatchMethod 方法...
之后,我为它写了一个补丁,DOMImplMobileSafari.insertChild
并且确实有效!但我不想复制DOMImplUserPatcher
只是为了应用它,DOMImplMobileSafari
并且仍然认为某些东西对我来说没有按预期工作。
知道我做错了什么吗?