4

Я уже много раз проводил тесты на Espresso, и я наконец решил начать тестирование фрагментов.Эспрессо - как получить текущую активность для проверки фрагментов?

Сразу же я столкнулся с проблемой, как мне получить текущую активность?

Мое приложение использует данные из входа, поэтому я не могу запустить действие с помощью тестового правила. Проще говоря, есть что-то похожее на getActivity() при проведении эспрессо-тестов?

ответ

13

я обычно это так, это выглядит (и, вероятно, есть) Hacky, но, эй, это работает

import static android.support.test.InstrumentationRegistry.getInstrumentation; 

public class MyTest { 

    private Activity getActivityInstance(){ 
     final Activity[] currentActivity = {null}; 

     getInstrumentation().runOnMainSync(new Runnable(){ 
      public void run(){ 
       Collection<Activity> resumedActivity = ActivityLifecycleMonitorRegistry.getInstance().getActivitiesInStage(Stage.RESUMED); 
       Iterator<Activity> it = resumedActivity.iterator(); 
       currentActivity[0] = it.next(); 
      } 
     }); 

     return currentActivity[0]; 
    } 
} 
+0

но как использовать это решить? Например, теперь я использовал вот так: 'val activity = mActivityTestRule.getActivity() val idlingResource = ElapsedTimeIdlingResource (активность)' – Morozov

+0

Я боюсь, что не понял вашу проблему – lelloman

+0

Извините за мой английский), я имею в виду, как я могу вызвать свой метод в другом классе? – Morozov