Я хочу проверить, загружено изображение или нет.Итак, я сравниваю изображение-заполнитель и загруженное изображение как растровое изображение.Но я не могу добраться до загруженного изображения. Как я могу получить?
Тест
onView(withId(R.id.sdv_profile_image)).check(matches(CustomMatchers.hasSameImage(R.drawable.ic_lock_white_24_dp)))
CustomMatchers.class
fun hasSameImage(expectedId: Int): Matcher<View> {
return object : TypeSafeMatcher<View>(SimpleDraweeView::class.java) {
override fun describeTo(description: Description) {
}
override fun matchesSafely(target: View?): Boolean {
val image = target as SimpleDraweeView
val resources = target.context.resources
val expectedDrawable = resources.getDrawable(expectedId)
if (expectedDrawable == null) return false
val bitmap = getBitmap(image.background)
val otherBitmap = getBitmap(expectedDrawable)
return bitmap.sameAs(otherBitmap)
}
}}
private fun getBitmap(drawable: Drawable): Bitmap {
val bitmap = Bitmap.createBitmap(drawable.intrinsicWidth, drawable.intrinsicHeight, Bitmap.Config.ARGB_8888)
val canvas = Canvas(bitmap)
drawable.setBounds(0, 0, canvas.width, canvas.height)
drawable.draw(canvas)
return bitmap
}
Ошибка
java.lang.IllegalStateException: image.background must not be null