Я использую UI Tests, используя эспрессо. Мой босс хочет, чтобы я проверил, что после определенного действия у linearLayout есть новый и правильный цвет. Я написал пользовательский Искатель, который выглядит следующим образомLinearLayout getBackground(). GetColor() return wrong int value
public static Matcher<View> withBgColor(final int color) {
Checks.checkNotNull(color);
return new BoundedMatcher<View, LinearLayout>(LinearLayout.class) {
@Override
public boolean matchesSafely(LinearLayout layout) {
MyLog.debug(String.valueOf(color) + " vs " + String.valueOf(((ColorDrawable) layout.getBackground()).getColor()));
return color == ((ColorDrawable) layout.getBackground()).getColor();
//return color == (((PaintDrawable) layout.getBackground()).getPaint()).getColor();
}
@Override
public void describeTo(Description description) {
description.appendText("With background color: ");
}
};
}
Моей проблема заключается в том, что сравнение предоставленного цвета и цвета из фона не то же самое. В приложении я вижу, что правильный цвет установлен. Это делается так:
holder.linearLayout.setBackgroundColor(ctx.getResources().getColor(R.color.grey_300));
Как только тест пытается сравнивать значения, они отличаются друг от друга:
Log: CustomMatcher: 17170432 vs -2039584
Я называю сличитель как этот
.check(matches(withBgColor(R.color.grey_300)));
Может кто-нибудь поможет мне, как я могу проверить, соответствует ли цвет? То, как я сделал не удается каждый раз ... Спасибо
Спасибо, что сработал. Какая глупость ... Спас мой день! – glethien
Нет проблем! То же самое случилось со мной некоторое время назад, когда мы использовали «ArgbEvaluator» для анимации некоторых значений цвета ... – npace