我正在使用GWT2.7,我有一个类似的视图:
public class InContextSearchView
extends ViewWithUiHandlers<InContextSearchUIHandlers>
implements InContextSearchPresenter.MyView
{
@UiField
TextBox searchValueField;
private final Widget m_widget;
interface Binder
extends UiBinder<Widget, InContextSearchView>
{
}
@Inject
public InContextSearchView( Binder binder )
{
m_widget = binder.createAndBindUi( this );
searchValueField.addKeyPressHandler( new KeyPressHandler()
{
@Override
public void onKeyPress( KeyPressEvent event_ )
{
if( KeyCodes.KEY_ENTER == event_.getNativeEvent().getKeyCode() )
{
occSearchBtn.click();
}
}
} );
}
public void something(){
//some code
}
}
为此,我写了一个Mockito测试用例,如下所示:
@RunWith( GwtMockitoTestRunner.class )
public class TestInContextSearchView
{
/**
@GwtMock
InContextSearchView.Binder m_binder;
@InjectMocks
@Spy
InContextSearchView m_inContextSearchView;
@Test
public void testSomething()
{
m_inContextSearchView.something();
}
}
问题是“searchValueField”没有被模拟并且为null。因此,当mockito尝试使用构造函数为InContextSearchView创建对象时,它会抛出nullpointer异常。我不应该触摸原始代码。 此外,如果可以提供解决方案,则无法使用PowerMock。
我做错了什么?如何初始化@UiField以避免nullpointer异常?