2015-05-04 14 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。 –