gpt4 book ai didi

android - 在 Android 上进行单元测试期间的语言环境

转载 作者:IT老高 更新时间:2023-10-28 22:24:46 25 4
gpt4 key购买 nike

我有一些代码要测试。我想检查一个字符串是否由我在资源中拥有的​​各种字符串正确组成。这里的挑战是处理我的资源中的多个翻译。我知道在测试桌面应用程序时区域设置可能是一个问题,建议您创建独立于区域设置的测试。

我发现您可以通过编程方式设置语言环境,但不推荐这样做(参见 Change language programmatically in Android)。虽然这个问题的目的是在正常运行应用程序时在运行时更改语言环境,但我想知道是否有更好的解决方案来解决我的问题。

最佳答案

如果只是为了测试,那么您可以通过编程方式更改语言环境而不会出现任何问题。它将更改您的应用程序的配置,您将能够使用新的语言环境测试您的代码。它具有与用户更改它相同的效果。如果你想自动化你的测试,你可以编写一个脚本,使用 adb shell 作为 described here 来更改语言环境。 ,然后启动您的测试。

以下是测试“取消”一词在英语、德语和西类牙语语言环境中的翻译示例:

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);
}

}

以下是 Eclipse 中的执行结果:

enter image description here

Android O 更新。

在 Android O 中运行时,应使用 Locale.setDefault(Category.DISPLAY, locale) 方法(参见 behaviour changes 了解更多详情)。

关于android - 在 Android 上进行单元测试期间的语言环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16760194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com