我正在为我的项目使用espresso test。我想检查一下LinearLayout的背景颜色。我使用了以下代码,但无法正常工作,并收到此错误:
不能将android.graphics.drawable.LayerDrawable转换为android.graphics.drawable.ColorDrawable
如果有人能帮上忙,谢谢
public static Matcher<View> withBgColor(final int color) {
Checks.checkNotNull(color);
return new BoundedMatcher<View, LinearLayout>(LinearLayout.class) {
@Override
public boolean matchesSafely(LinearLayout row) {
return color == ((ColorDrawable) row.getBackground()).getColor();
}
@Override
public void describeTo(Description description) {
description.appendText("with text color: ");
}
};
}下面是我在espersso测试中的代码
onView(ViewMatchers.withId(R.id.device_linearLayout)).check(ViewAssertions.matches(withBgColor(R.drawable.background_transparent_list)));发布于 2021-10-11 16:25:31
可以作为getBackground()输出的对象很少。例如Drawable、VectorDrawable、ColorDrawable等。因此,第一步是识别输出的类型。为此,您可以使用以下代码:
row.getBackground().getClass().getSimpleName();上面代码的输出显示了可绘制的类型。在此之后,您可以决定使用合适的类来转换它。
https://stackoverflow.com/questions/69525813
复制相似问题