我想进行一次Robolectric测试,以确保法语中的所有字符串都包含相同数量的占位符(我正在谈论%1 $ s),就像英语中的字符串一样。
我尝试添加@Config(限定符=" fr-land")但是它提供了所有英文字符串(默认),并且只用法语给出了未用英语定义的字符串。
还试图创建一个新的Resource对象并提供自定义本地 - 似乎在Android中工作但在Robolectric中没有。
请帮忙!
答案 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());
}