使用GWTMock和Mockito

时间:2015-10-01 07:34:28

标签: unit-testing mockito gwtmockito

我正在使用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异常?

0 个答案:

没有答案