package com.chriszou.auttutorial.test.daggermock; import android.widget.EditText; import com.chriszou.auttutorial.BuildConfig; import com.chriszou.auttutorial.R; import com.chriszou.auttutorial.dagger2.LoginPresenter; import com.chriszou.auttutorial.dagger2.UserManager; import com.chriszou.auttutorial.daggermock.LoginActivity; import com.chriszou.auttutorial.mockito.PasswordValidator; import com.chriszou.auttutorial.test.dagger2.TestUtils; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.Mockito; import org.robolectric.Robolectric; import org.robolectric.RobolectricGradleTestRunner; import org.robolectric.annotation.Config; import static org.mockito.Matchers.any; import static org.mockito.Mockito.verify; /** * Created by xiaochuang on 5/14/16. */ @RunWith(RobolectricGradleTestRunner.class) @Config(constants = BuildConfig.class, sdk = 21) public class LoginActivityTest { @Rule public DaggerRule daggerRule = new DaggerRule(); @Mock LoginPresenter loginPresenter; @Test public void testLogin_old_way() { TestUtils.setupDagger(); Mockito.when(TestUtils.appModule.provideLoginPresenter(any(UserManager.class), any(PasswordValidator.class))).thenReturn(loginPresenter); //当mockAppModule的provideLoginPresenter()方法被调用时,让它返回mockLoginPresenter LoginActivity loginActivity = Robolectric.setupActivity(LoginActivity.class); ((EditText) loginActivity.findViewById(R.id.username)).setText("xiaochuang"); ((EditText) loginActivity.findViewById(R.id.password)).setText("xiaochuang is handsome"); loginActivity.findViewById(R.id.login).performClick(); verify(loginPresenter).login("xiaochuang", "xiaochuang is handsome"); } @Test public void testLogin_shinny_way() { LoginActivity loginActivity = Robolectric.setupActivity(LoginActivity.class); ((EditText) loginActivity.findViewById(R.id.username)).setText("xiaochuang"); ((EditText) loginActivity.findViewById(R.id.password)).setText("xiaochuang is handsome"); loginActivity.findViewById(R.id.login).performClick(); verify(loginPresenter).login("xiaochuang", "xiaochuang is handsome"); } }