unitarias - unit test android
Locale durante la prueba de unidad en Android (1)
Si es solo para pruebas, entonces puede cambiar la configuración regional mediante programación sin ningún problema. Cambiará la configuración de su aplicación y podrá probar su código con la nueva configuración regional. Tiene el mismo efecto que si un usuario lo hubiera cambiado. Si desea automatizar sus pruebas, puede escribir un script que cambie la configuración regional utilizando el adb shell
como se describe aquí , y luego iniciar las pruebas.
Este es un ejemplo de las traducciones de prueba de la palabra "Cancelar" para las configuraciones regionales de inglés, alemán y español:
public class ResourcesTestCase extends AndroidTestCase {
private void setLocale(String language, String country) {
Locale locale = new Locale(language, country);
// here we update locale for date formatters
Locale.setDefault(locale);
// here we update locale for app resources
Resources res = getContext().getResources();
Configuration config = res.getConfiguration();
config.locale = locale;
res.updateConfiguration(config, res.getDisplayMetrics());
}
public void testEnglishLocale() {
setLocale("en", "EN");
String cancelString = getContext().getString(R.string.cancel);
assertEquals("Cancel", cancelString);
}
public void testGermanLocale() {
setLocale("de", "DE");
String cancelString = getContext().getString(R.string.cancel);
assertEquals("Abbrechen", cancelString);
}
public void testSpanishLocale() {
setLocale("es", "ES");
String cancelString = getContext().getString(R.string.cancel);
assertEquals("Cancelar", cancelString);
}
}
Aquí están los resultados de ejecución en Eclipse:
Android o actualización.
Cuando se ejecuta en el método Android O Locale.setDefault(Category.DISPLAY, locale)
se debe usar Locale.setDefault(Category.DISPLAY, locale)
(ver cambios de comportamiento para más detalles).
Tengo un código que quiero probar. Quiero verificar si una cadena está compuesta correctamente de varias cadenas que tengo en recursos. El reto aquí es lidiar con múltiples traducciones en mis recursos. Sé que la configuración regional puede ser un problema cuando se prueba una aplicación de escritorio y que se recomienda crear pruebas independientes de la configuración regional.
Descubrí que puede establecer la configuración regional de manera programática, pero no se recomendó (consulte Cambiar el idioma mediante programación en Android ). Si bien esta pregunta está dirigida a cambiar la configuración regional en tiempo de ejecución cuando se ejecuta una aplicación normalmente, me preguntaba si había una mejor solución para mi problema.