Android Test4 Application(Context)实例的获取
在开发一个 SDK 时,最常涉及大的一个问题:初始时 SDK 内 Context/Application 的引用。它可以是 Activity Service 等各组件的实例,也可以是自定义的 Application 实例。由于 Activity/Service 等组件的生命周期都有定数,Application 的生命时长是贯穿整个 APK 的开始到结束。因此对于 SDK 内需要长时间存在的实例,可以关联到 Application 的 Context,在使用时需要的 Context 可以关联到普通组件的 Context 实例。
测试的 Context 和 Application
被测试方法很多时候需要依赖 Context 去访问相关的资源或调用它的方法获取想要的结果,那么在测试代码中就需要来获取到这个 Context 实例。
下面以 SDK 内仪器测试(Instrumentation Test)的测试代码为例,说明如何通过测试框架获取 Context 和 Application 实例。
在 @Before 方法中初始化整个测试方法需要依赖的 Context 实例。
class ToolsTest {
private lateinit var _context: Context
@Before
fun init() {
_context = InstrumentationRegistry.getInstrumentation().targetContext
// 或
// _context = ApplicationProvider.getApplicationContext<Context>()
}
@Test
fun test1() {
// ...
}
}
倘若需要 Application 实例,可以如下获取。
class ToolsTest {
private lateinit var _application: Application
private lateinit var _context: Context
@Before
fun init() {
_application = InstrumentationRegistry.getInstrumentation().targetContext.applicationContext as Application
// 或
// _application = ApplicationProvider.getApplicationContext<Application>()
_context = application.applicationContext
}
@Test
fun test1() {
// ...
}
}
上面这段初始化代码中,获得 Application 实例需要通过 Instrumentation 获取的 applicationContext 实例进行类型强转。

1036

被折叠的 条评论
为什么被折叠?



