无法在 gwtmockito 中调试 GWT 本机代码

cannot debug GWT native code within gwtmockito

我有一个 GwtMockitoTestCase,调试器似乎没有进入任何原始 GWT class,如 Widget、ResizeLayoutPanel 等。 但是,当 运行 DevMode 中的相同代码时,调试器会正确地逐步执行该代码。

这是否与 JRE 中的 GWT 运行 有关?如果不是,会不会是我的 classpath 不知何故出错了?或者 gwt-user jar 没有调试信息?

我也尝试过扩展 GWT class:

ResizeLayoutPanel w = new ResizeLayoutPanel() {
        @Override
        public void setWidget(Widget pW) {
            super.setWidget(pW); (1)
        }
    };

第 (1) 行的断点有效,但按 F5,它不会进入 ResizeLayoutPanel 的 setWidget 方法。

谢谢!

深入研究 GwtMockito 代码后,似乎有一组 类 被存根并且一些方法的主体被删除。因此无法调试这些方法。

剩下的问题是 GWTMockito 以某种方式破坏了代码覆盖工具 (EclEmma),它显示的代码覆盖比预期的要少。我已经在 SO 上发布了一个关于这个主题的单独问题:

一些技术背景:

GwtMockitoClassLoader 完全从 GWT 存根 类,请检查 GwtMockitoTestRunner#getClassesToStub() 其中包括 Widget 和 ResizeLayoutPanel 类.

stubbing 过程完全删除方法的主体 returning 原始值或 void,请参阅 GwtMockitoClassLoader#onLoad。如果 return 是一个 java bean,它将 return 它的模拟版本。