Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对于Android应用程序,如何检查特定图像视图中使用的资源ID?_Android_Android Espresso_Android Drawable_Android Testing - Fatal编程技术网

对于Android应用程序,如何检查特定图像视图中使用的资源ID?

对于Android应用程序,如何检查特定图像视图中使用的资源ID?,android,android-espresso,android-drawable,android-testing,Android,Android Espresso,Android Drawable,Android Testing,我正在为我公司的应用程序编写自动测试。这些测试使用了浓缩咖啡和机械通气的组合。其中的一些测试应该检查某些ReactImageView元素是否正在显示特定的图像 我第一次尝试使用hasBackground(),如下所示: onView(...).check(matches(hasBackground(R.drawable...))); 但是,这将返回一个NoMatchingViewException 然后我尝试了Daniele Bottillo的matcher,如下所述: 但这也不起作用: ja

我正在为我公司的应用程序编写自动测试。这些测试使用了浓缩咖啡和机械通气的组合。其中的一些测试应该检查某些
ReactImageView
元素是否正在显示特定的图像

我第一次尝试使用
hasBackground()
,如下所示:

onView(...).check(matches(hasBackground(R.drawable...)));
但是,这将返回一个
NoMatchingViewException

然后我尝试了Daniele Bottillo的matcher,如下所述:

但这也不起作用:

java.lang.ClassCastException: com.facebook.drawee.generic.RootDrawable cannot be cast to android.graphics.drawable.BitmapDrawable
最后,我尝试了Frankie Sardo的解决方案:


但是,这会再次抛出一个
NoMatchingViewException
。我的点子快用完了。甚至可以检查哪些资源附加到图像视图吗?

最简单的方法是使用库及其
assertHasDrawable(R.id.,R.drawable.)
断言函数。

甚至可以检查哪些资源附加到图像视图吗?--不太可能,因为您可以从资源以外的内容填充
ImageView
。在您的情况下,您似乎正在使用一个中间库(来自Facebook),该库正在包装或以其他方式操纵您的基于资源的图像。是的,我们使用的是React Native。我知道使用标签存储资源信息是可能的,但通常不认为为QA目的修改生产代码是最佳做法。
java.lang.ClassCastException: com.facebook.drawee.generic.RootDrawable cannot be cast to android.graphics.drawable.BitmapDrawable
onView(allOf(..., withImageDrawable(R.drawable...), isDisplayed())).check(matches(isDisplayed()));