我正在尝试从我的资源中的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()
我真的不明白发生了什么,因为相同的代码会产生不同的结果,无论我是在应用程序中运行还是在测试中...
修改
在仪表测试中运行时,一切运行良好。我仍然想了解为什么在单元测试中没有获得drawables。
答案 0 :(得分:2)
据我所知,这是由Robolectric Shadow implementation of BitmapFactory引起的,它实际上并未打开资源,而只是设置了位图是由该资源“创建”的。这是一个存根实现,实际上不做任何工作。
当Robolectric看到具有Robolectric Shadow实现的对象时,它将使用Shadow实现而不是真实对象。有关阴影如何工作的更多详细信息,请参见Robolectric Shadows documentation。