我正在使用 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”没有被嘲笑并且为空。因此,当 mockito 尝试使用构造函数为 InContextSearchView 创建对象时,它会抛出空指针异常。我不应该接触原始代码。此外,如果可以提供解决方案,则不能使用 PowerMock。
我究竟做错了什么?如何初始化 @UiField 以避免空指针异常?