1. Robolectric
Robolectric允許我們可以在JVM上對Android應(yīng)用程序進行測試
Robolectric框架允許我們編寫單元測試,測試的代碼使用了Android API,在本地JVM上運行
Robolectric mock了android.jar文件中的部分Android framework的代碼
Robolectric支持資源的處理,例如inflation of views
Robolectric將所有Android類替換為shadow對象。
2. 使用Robolectric
3. Roboelectric test example
@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class)
public class MyActivityTest {
private MainActivity activity;
@Before
public void setup() {
activity = Robolectric.buildActivity(MainActivity.class) .create().get();
}
@Test
public void shouldHaveHappySmiles() throws Exception {
String hello = new MainActivity().getResources().getString( R.string.hello_world);
assertThat(hello, equalTo("Hello world!"));
}
@Test
public void checkActivityNotNull() throws Exception {
assertNotNull(activity);
}
@Test
public void buttonClickShouldStartNewActivity() throws Exception {
Button button = (Button) activity.findViewById( R.id.button2 );
button.performClick();
Intent intent = Shadows.shadowOf(activity).peekNextStartedActivity();
assertEquals(SecondActivity.class.getCanonicalName(), intent.getComponent().getClassName());
}
@Test
public void testButtonClick() throws Exception {
MainActivity activity = Robolectric.buildActivity(MainActivity.class) .create().get();
Button view = (Button) activity.findViewById(R.id.button1);
assertNotNull(view);
view.performClick();
assertThat(ShadowToast.getTextOfLatestToast(), equalTo("Lala") );
}
}