在Robolectric中获取所有语言的字符串

时间:2014-04-30 15:36:37

标签: android robolectric

我想进行一次Robolectric测试,以确保法语中的所有字符串都包含相同数量的占位符(我正在谈论%1 $ s),就像英语中的字符串一样。

我尝试添加@Config(限定符=" fr-land")但是它提供了所有英文字符串(默认),并且只用法语给出了未用英语定义的字符串。

还试图创建一个新的Resource对象并提供自定义本地 - 似乎在Android中工作但在Robolectric中没有。

请帮忙!

2 个答案:

答案 0 :(得分:4)

尝试在每次测试时调用以下代码段。这是在https://github.com/robolectric/robolectric/issues/914

报告的解决方法
public static void setLocale( final Context context, final String language )
{
    final Locale locale = new Locale( language );
    Robolectric.shadowOf( context.getResources().getConfiguration() ).setLocale( locale );
    Locale.setDefault( locale );
}

答案 1 :(得分:3)

我使用Robolectric 3.1和nenick的解决方案对我没有用,但以下解决方案确实如此:

private void setLocale(Locale locale) {
    Locale.setDefault(locale);
    RuntimeEnvironment.setQualifiers(locale.getLanguage());
}