package org.edx.mobile.test; import android.support.annotation.NonNull; import org.edx.mobile.view.Presenter; import org.junit.After; import static org.mockito.Mockito.mock; public abstract class PresenterTest<P extends Presenter<V>, V> extends BaseTest { protected P presenter; protected V view; protected final void startPresenter(@NonNull P p) { presenter = p; view = mock(getViewType()); presenter.attachView(view); } @After public final void after() { if (null != view && null != presenter) { presenter.detachView(); presenter.destroy(); } } @SuppressWarnings("unchecked") private Class<V> getViewType() { return (Class<V>) GenericSuperclassUtils.getTypeArguments(getClass(), PresenterTest.class)[1]; } }