0

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

这是否与在 JRE 中运行的 GWT 有关?如果不是,那可能是我的类路径在某种程度上是错误的吗?或者 gwt-user jar 没有调试信息?

我也尝试过扩展一个 GWT 类:

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

第 (1) 行的断点正在工作,但按 F5,它不会进入 ResizeLayoutPanel 的 setWidget 方法。

谢谢!

4

1 回答 1

0

在挖掘 GwtMockito 代码之后,似乎有一组特定的类被存根,并且一些方法的主体被删除。因此无法调试这些方法。

剩下的问题是 GWTMockito 以某种方式破坏了代码覆盖率工具(EclEmma),它显示的代码覆盖率低于预期。我已经就这个主题发布了一个单独的问题:使用 GwtMockito 报告的错误代码覆盖率

一些技术背景:

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

对于返回原始值或 void 的方法,存根过程会完全删除主体,请参阅 GwtMockitoClassLoader#onLoad。如果返回的是一个 java bean,它会为它返回一个模拟版本。

于 2015-05-05T10:09:09.150 回答