在Android测试中无法从资源转换为位图

时间:2014-10-10 18:00:24

标签: android android-testing bitmapfactory

Iam尝试将资源图像转换为位图,以便在android中的Instrumentation测试中对其进行测试。最初我把它作为常规测试扩展测试用例。我的问题是这个

 protected void setUp()
{
 testbmap=BitmapFactory.decodeResource(getInstrumentation().
 getContext().getResources(), R.drawable.ic_launcher);
}

然后我测试位图不为空但测试失败。

public void testnotnull()
{
 assertNotNull(testbmap);
}

所以我在这里做错了我认为它可能与decoderecource()中的第一个param有关,也许我没有指向正确的资源?我也尝试了getApplicationContext.getResources()方法,但我对此不太确定。 有谁可以帮助我?

1 个答案:

答案 0 :(得分:2)

我解决了这个问题,更改了#getContext(),它会将检测程序包的上下文返回到#getTargetContext(),这将返回目标应用程序的上下文。

  

返回正在检测的目标应用程序的上下文。注意   这通常不同于仪器的上下文   代码,因为仪器代码经常生活是不同的   包比它运行的应用程序包。看到   getContext用于检索检测代码的上下文。

Kotlin方法:

@Test
fun bitmapIsNotNull() {
    val context = InstrumentationRegistry.getInstrumentation().targetContext
    val bitmap = BitmapFactory.decodeResource(context.resources, R.raw.any_image)

    Assert.assertNotNull(bitmap)
}