ActivityTestRule.getActivity在Before方法中返回null

时间:2015-05-15 14:24:28

标签: android testing android-espresso kotlin

我需要在每次测试之前清空用户的数据

// Kotlin code
fun getActivity() = activityRule.getActivity()

Before
fun setUp() {
    cleanUp(getActivity())
}

我需要获取一个Context才能这样做,但是在setUp中,activityRule.getActivity()返回null。

我也尝试过:

Before
fun setUp() {
    val i = Intent()
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
    activityRule.lauchActivity(i)
    cleanUp(getActivity())
}

我有一项活动,但cleanUp的工作时间只有一半(我相信某些竞争条件适用于此处)

我想避免在After函数中使用cleanUp,以便在需要时手动查看我的应用程序状态。

无论如何在Before函数中获取上下文?

由于

2 个答案:

答案 0 :(得分:10)

您可以从InstrumentationRegistry获取生产应用上下文,如下所示: InstrumentationRegistry.getTargetContext()

请记住:InstrumentationRegistry.getContext()是测试apk的上下文。

答案 1 :(得分:0)

在撰写本文时,InstrumentationRegistry已过时。 我改用ApplicationProvider.getApplicationContext<Application>()库中的androidx.test

相关性为:androidTestImplementation "androidx.test.espresso:espresso-core:3.1.1"