Jeśli to tylko do testowania, można zmienić ustawienia regionalne programowo bez żadnych problemów. Zmieni to konfigurację Twojej aplikacji i będziesz mógł przetestować swój kod za pomocą nowych ustawień narodowych. Ma taki sam efekt, jak gdyby użytkownik go zmienił. Jeśli chcesz zautomatyzować testy, możesz napisać skrypt, który zmienia ustawienia narodowe za pomocą adb shell
jako described here, a następnie uruchomić testy.
Oto przykład testowania tłumaczenia słowa "Anuluj" dla języka angielskiego, niemieckiego i hiszpańskiego lokalizacjach:
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);
}
}
Oto wyniki wykonania w Eclipse:
Androida O aktualizacja.
W przypadku używania w systemie Android należy użyć metody Locale.setDefault(Category.DISPLAY, locale)
(więcej szczegółów można znaleźć w artykule behaviour changes).
Jestem również zainteresowany tym, stąd bounty. Moja specyfikacja: testuję z poziomu Eclipse i chciałbym móc zmienić ustawienia regionalne, w tym strefę czasową, tak płynnie, jak to możliwe, w ramach pakietu. Chciałbym zobaczyć działający przykład, jak to zrobić w odpowiedzi. –
@MattGibson Zaktualizowałem swoją odpowiedź na przykładzie roboczym. Zmienia ustawienia regionalne zarówno dla formatów daty, jak i zasobów aplikacji. –