【问题标题】:Espresso - how to get current activity to test Fragments?浓缩咖啡 - 如何获得当前活动来测试片段?
【发布时间】:2016-12-08 19:02:36
【问题描述】:

我已经玩了几个星期了Espresso 测试,最后我决定开始测试 Fragments。

我马上遇到了一个问题,如何获取当前活动?

我的应用使用来自登录的数据,因此我无法使用测试规则启动活动。 简单来说,在做 espresso 测试的时候有没有类似getActivity() 的东西?

【问题讨论】:

    标签: android android-testing ui-testing android-espresso


    【解决方案1】:

    我通常是这样理解的,它看起来(并且可能是)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];
        }
    }
    

    【讨论】:

    • 但是如何使用这个解决方案?例如现在我这样使用:val activity = mActivityTestRule.getActivity() val idlingResource = ElapsedTimeIdlingResource(activity)
    • 恐怕我没明白你的问题
    • 对不起我的英语)我的意思是我如何在另一个类中调用你的方法?
    • 您只需将此方法添加到您的课程中:)
    • 例如 MyTest.getActivityInstance() 不起作用(
    【解决方案2】:

    这里是lelloman's solution,在 Kotlin 中略有变化:

    import android.app.Activity
    import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation
    import androidx.test.runner.lifecycle.ActivityLifecycleMonitorRegistry
    import androidx.test.runner.lifecycle.Stage
    
    object EspressoHelper {
        fun getCurrentActivity(): Activity? {
            var currentActivity: Activity? = null
            getInstrumentation().runOnMainSync { run { currentActivity = ActivityLifecycleMonitorRegistry.getInstance().getActivitiesInStage(Stage.RESUMED).elementAtOrNull(0) } }
            return currentActivity
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-15
      • 1970-01-01
      相关资源
      最近更新 更多