Android Test4 Application(Context)实例的获取

Android Test4 Application(Context)实例的获取

在开发一个 SDK 时,最常涉及大的一个问题:初始时 SDK 内 Context/Application 的引用。它可以是 Activity Service 等各组件的实例,也可以是自定义的 Application 实例。由于 Activity/Service 等组件的生命周期都有定数,Application 的生命时长是贯穿整个 APK 的开始到结束。因此对于 SDK 内需要长时间存在的实例,可以关联到 ApplicationContext,在使用时需要的 Context 可以关联到普通组件的 Context 实例。


测试的 ContextApplication

被测试方法很多时候需要依赖 Context 去访问相关的资源或调用它的方法获取想要的结果,那么在测试代码中就需要来获取到这个 Context 实例。

下面以 SDK 内仪器测试(Instrumentation Test)的测试代码为例,说明如何通过测试框架获取 ContextApplication 实例。


@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 实例进行类型强转。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虚妄皆空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值