import android.content.Intent; import android.support.test.rule.ActivityTestRule; import android.support.test.runner.AndroidJUnit4; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; @RunWith(AndroidJUnit4.class) public class MyFragmentTest { @Rule public MockitoRule mMockitoRule = MockitoJUnit.rule(); @Rule public ActivityTestRule mActivityTestRule = new ActivityTestRule<>(MyActivity.class, true, false); @Mock private MyPresenter mTestPresenter; private MyFragment mTestFragment; @Before public void setUp() throws Exception { MyActivity activity = mActivityTestRule.launchActivity(new Intent()); activity.startTestFragment(mTestPresenter); mTestFragment = activity.getTestFragment(); Thread.sleep(5_000); } @Test public void onDestroy() throws Exception { mTestFragment.onStop(); mTestFragment.onDestroy(); verify(mTestPresenter, times(1)).attachView(mTestFragment); verify(mTestPresenter, times(1)).detachView(); verify(mTestPresenter, times(1)).onDestroy(); verifyNoMoreInteractions(mTestPresenter); } }