ActivityTestRule.getActivity returns Before 方法中为空

ActivityTestRule.getActivity returns null in Before method

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

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

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

我需要获取上下文才能执行此操作,但在设置中,activityRule.getActivity() returns null。

我也试过:

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

我得到了一个 activity,但是清理只有一半时间有效(我相信这里适用一些竞争条件)

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

有没有办法在 Before 函数中获取上下文?

谢谢

您可以像这样从 InstrumentationRegistry 获取生产应用上下文: InstrumentationRegistry.getTargetContext()

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

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

依赖是:androidTestImplementation "androidx.test.espresso:espresso-core:3.1.1"