2013-08-09 9 views
1

Сегодня я тестировал устройство простым приложением. У меня есть методПроверка жизненного цикла ActivityUnitTestCase

protected void onRestart() { 
    disp.setText("The numbers you entered were"); 
    super.onRestart(); 
} 

И в моем тесте я использую

public void testRestart(){ 
    String dispText = disp.getText().toString(); 
    getInstrumentation().callActivityOnStop(mActivity); 
    assertEquals(dispText, disp.getText().toString()); 
} 

утверждение возвращает истинное значение, что текст не изменяется. Однако, когда я использую

public void testRestart(){ 
    String dispText = disp.getText().toString(); 
    getInstrumentation().callActivityOnRestart(mActivity); 
    assertEquals(dispText, disp.getText().toString()); 
} 

утверждение неверно, как ожидалось.

В соответствии с жизненным циклом действия onRestart() всегда следует вызывать после onStop(), если пользователь переходит от активности.

Не следует ли вызывать метод onRestart() после onStop()? Или вызов getInstrumentation().callActivityOnStop(mActivity); убивает активность, а не просто останавливает ее?

ответ

3

ActivityUnitTestCase является изолированным, модульным тестированием одного активности. Задача Activity Under Test не участвует в системных взаимодействиях.

Вы можете начать свою активность с помощью startActivity(), и это будет вызывать onCreate(), однако, если вы хотите в дальнейшем упражнении активности методы жизненного цикла, вы должны вызвать их самостоятельно из вашего теста.

+0

Я понимаю, что. Мой вопрос в том, что методы жизненного цикла полностью независимы друг от друга? Не следует ли вызывать callActivityOnStop' call onStop(), а затем onRestart()? Или он просто вызывает onStop()? – Traxex1909

+0

В упомянутом случае вы должны вызвать методы жизненного цикла, поэтому вызов 'onStop()' не будет вызывать 'onRestart()' –

+0

Хорошо, спасибо. – Traxex1909