2015-05-04 45 views
0

内GWT本地代码我有一个GwtMockitoTestCase和调试器似乎不喜欢的Widget,ResizeLayoutPanel等任何香草GWT类中输入 但是,在运行里面DevMode的相同的代码时,正确地通过调试步骤码。不能调试gwtmockito

这是否与在JRE内部运行的GWT有关?如果没有,是否可能是我的类路径错了?或者,也许gwt用户jar没有调试信息?

我也试图扩展GWT类:

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

和在线断点(1)工作,但按下F5键,它不ResizeLayoutPanel的setWidget方法往里走。

谢谢!

回答

0

在挖掘GwtMockito代码后,似乎有一些类被删除,某些方法的主体被删除。因此无法调试这些方法。

现在仍然存在的问题是,GWTMockito打破了代码覆盖工具(EclEmma),该代码覆盖工具显示的代码覆盖率比预期要低。我已经发布一个单独的问题,关于这个话题的SO:false code coverage reported using GwtMockito

有些技术背景:

GwtMockitoClassLoader存根从GWT一些类完全,请GwtMockitoTestRunner#getClassesToStub(),其中包括窗口小部件和ResizeLayoutPanel类。

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

+1

那么,这是gwtmockito的重点,对吧?这是“解除”JSNI代码,以便它可以在vanilla JUnit测试中运行。如果你想测试一个小部件的内部,使用'GWTTestCase',如果你想检查这些小部件之间的交互,使用mock。 –