我想写一个gwt-test-utils测试来测试我创建的复合小部件。在花了一些时间开始之后,JUnit测试终于开始了,我可以初始化小部件甚至访问私有字段。
然而,这是show stop:我的小部件使用另一个扩展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 在com.google.gwt.user.client.impl.DOMImplStandard.insertChild(原生方法) 在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
。 DOMImpl
有一个PatchClass,其中包含insertChild
(DOMImplUserPatcher
)的PatchMethod。但由于某些原因,修补似乎对我没有用。我尝试为DOMImpl.insertChild
编写自己的补丁,结果是
com.googlecode.gwt.test.exceptions.GwtTestPatchException:为同一目标检测到2个@PatchMethod方法......
之后我为DOMImplMobileSafari.insertChild
写了一个补丁,确实有效!但是我不想复制DOMImplUserPatcher
只是为了将其应用到DOMImplMobileSafari
,并且仍然认为某些内容无法正常运行。
知道我做错了吗?