我读过这个:http://robolectric.blogspot.co.uk/2013/05/configuring-robolectric-20.html 和config annotation
这似乎很简单,但我无法得到正确的结果,断言失败了预期的“fr”但是“en”。
import android.app.Activity;
import android.content.res.Configuration;
import android.content.res.Resources;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import java.util.Locale;
import static junit.framework.Assert.*;
@RunWith(RobolectricTestRunner.class)
@Config(manifest=Config.NONE)
public class LocaleTest {
@Config(qualifiers = "fr")
@Test
public void shouldBeFrench() {
resources = new Activity().getResources();
Locale locale = resources.getConfiguration().locale;
assertEquals("fr", locale.getLanguage());
}
}
答案 0 :(得分:1)
正在进行的关于user2511882回答的评论让我得到了这个答案:
我所做的是在测试项目的类路径中用API 16(Android 4.1.2)替换API 8(Android 2.2)的android.jar
。应用程序的实际项目仍然使用API 8中的项目。
之后,@Config
开始按手册中的说明正常工作。但是,我的代码中没有@Config(manifest=Config.NONE)
。
答案 1 :(得分:0)
https://github.com/robolectric/robolectric/issues/669
根据github上的这个问题,您需要将测试项目的api版本更改为4.0以上...您仍然可以保留应用程序的原始版本的> 4.0和@config
注释应该对你有用。