Я пытаюсь написать контрольно-измерительный тест, который проверяет жизненный цикл активности, когда моя активность убивается, и состояние экземпляра сохраняется, а затем воссоздается с этим состоянием экземпляра.Как проверить активность kill -> восстановить жизненный цикл с saveInstanceState
Я могу проверить это поведение вручную, ограничив ограничение фонового процесса «отсутствием фоновых процессов» в настройках разработчика моего устройства, но я хочу иметь автоматическое тестирование, которое доказывает, что моя деятельность может быть воссоздана.
В моей деятельности есть фрагмент с идентификатором R.id.content_frame.
Так что для меня это:
public class MainActivityInstrumentationTest extends ActivityInstrumentationTestCase2<MainActivity> {
public void testKillCreateLifeCycleWithProfileFragment() throws Throwable {
final Activity activity = getActivity();
navigateToProfile(activity);
Thread.sleep(5000);
runTestOnUiThread(new Runnable() {
@Override
public void run() {
activity.recreate();
}
});
getInstrumentation().waitForIdleSync();
Thread.sleep(5000);
assertProfileFragmentIsVisible((FragmentActivity) activity);
}
private void assertProfileFragmentIsVisible(FragmentActivity activity) {
FragmentManager supportFragmentManager = activity.getSupportFragmentManager();
Fragment currentFragment = supportFragmentManager.findFragmentById(R.id.content_frame);
assertEquals(ProfileFragment.class.getName(), currentFragment.getClass().getName());
}
}
activity.recreate проходит через все методы живого цикла обратного вызова и ultimalty вызывает OnCreate с сохраненной пачкой но fragmentManager в моем assertProfileFragmentIsVisible
метода не содержит никаких фрагментов.
Также я не уверен, следует ли использовать функцию activity.recreate - это правильный путь. Я пробовал много других способов, например, каждый раз называть каждый цикл жизненного цикла с помощью getInstrumentation().callActivityOn...
, но в итоге не нашел способа создания активности с сохраненным пакетом.
Любые идеи о том, как я могу создать такой инструментальный тест, будут оценены!
С уважением Frank