Android Robolectric单元测试:从Drawable加载位图

3

我正在尝试从资源中的drawable加载位图,但是当以下代码在单元测试中运行时,它似乎是空的,但是在正常活动中运行时不为空:

val bitmapImage = BitmapFactory.decodeResource(context!!.resources, R.drawable.my_image)
val bos = ByteArrayOutputStream()
val quality = 10
bitmapImage.compress(Bitmap.CompressFormat.JPEG, quality, bos)
val pixels = bos.toByteArray()

我真的不明白发生了什么事情,因为相同的代码无论我是在应用程序中运行还是在测试中运行,都会产生不同的结果...

编辑

在运行仪器测试时,一切都正常。尽管如此,我仍然想知道为什么在单元测试中无法获取可绘制对象。

1个回答

3
据我所知,这是由Robolectric Shadow implementation of BitmapFactory引起的,它实际上并没有打开资源,而只是设置了该位图是由该资源“创建”的。这是一个桩实现,实际上并不做任何工作。
当Robolectric看到具有Robolectric Shadow实现的对象时,它使用Shadow实现而不是真实对象。有关阴影如何工作的更详细信息,请参见Robolectric Shadows documentation

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接