1

我正在使用 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 以避免空指针异常?

4

0 回答 0