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"
我需要在每次测试前清空我的用户数据
// 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"