Prueba de color de fondo espresso Android
¿Es posible comprobar si el color de fondo coincide con un determinado color con espresso?
Hice un matcher personalizado, similar a lo que @Irfan sugirió, gracias!
- isIdleNow () devuelve true, pero nunca se envió un mensaje indicando que el recurso ha pasado de ocupado a inactivo
- PerformException: Error al realizar 'solo clic'
- Espresso AmbiguousViewMatcherException al intentar hacer clic en un botón de navegación
- Integración de Espresso con Proguard y Gradle
- Actualización de un EditText con Espresso
public static Matcher<Object> backgroundShouldHaveColor(int expectedColor) { return buttondShouldHaveBackgroundColor(equalTo(expectedColor)); } private static Matcher<Object> buttonShouldHaveBackgroundColor(final Matcher<Integer> expectedObject) { final int[] color = new int[1]; return new BoundedMatcher<Object, Button>( Button.class) { @Override public boolean matchesSafely(final Button actualObject) { color[0] =((ColorDrawable) actualObject.getBackground()).getColor(); if( expectedObject.matches(color[0])) { return true; } else { return false; } } @Override public void describeTo(final Description description) { // Should be improved! description.appendText("Color did not match "+color[0]); } }; }
- Espresso: Cómo utilizar R.string recursos de la carpeta androidTest
- Android Espresso: el filtrado de prueba no es compatible con la versión dada de JUnit. Actualice la versión de JUnit por lo menos a 4.6
- La importación de la red Espresso causa duplicateFileException
- Uso de Espresso ¿Cómo puedo comprobar el número de elementos en mi alerta Cuadro de diálogo
- Espresso cómo hacer clic en un ImageView colocado en el primer elemento de la lista?
- Espresso - typeText no funciona
- Android: Espresso no espera hasta que se muestre fragmento o actividad para que cada prueba fallara
- Prueba de un ViewPager y TabPageIndicator con Espresso
No estoy seguro acerca de eso, pero podemos recuperar el color de algunos elementos como el botón y el texto vistas `
Button button = (Button) findViewById(R.id.my_button); Drawable buttonBackground = button.getBackground();
Y puedes probar de esta manera
ColorDrawable b_color = (ColorDrawable) button.getBackground();
y entonces
int color = b_color.getColor(); if (colorID == R.color.green) { log("color is green"); }
Espero que esto te ayudará a empezar.
En mis pruebas tengo el siguiente matcher para probar el color de EditText
:
public static Matcher<View> withTextColor(final int color) { Checks.checkNotNull(color); return new BoundedMatcher<View, EditText>(EditText.class) { @Override public boolean matchesSafely(EditText warning) { return color == warning.getCurrentTextColor(); } @Override public void describeTo(Description description) { description.appendText("with text color: "); } }; }
Y el uso es:
onView(withId(R.id.password_edittext)).check(matches(withTextColor(Color.RED)));
Teniendo en cuenta que tiene la lista de colores, cree una matriz de ellos:
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="black">#000000</color> <color name="white">#FFFFFF</color> <array name="colors"> <item>@color/black</item> <item>@color/white</item> </array> </resources>
A continuación, obtendrá esta matriz y el bucle en él:
int[] colors = context.getResources().getIntArray(R.array.colors); for (int i = 0; i < colors.length; i++) { // Compare your color with 'colors[i]' }