我在使用Robolectric时遇到了一些问题,无法正确模拟TimeZone.getDefault()
,因为我的AppTest.class
没有使用ShadowTimeZone.class
中的静态影子方法。
AppTest.class
@RunWith(RobolectricTestRunner.class)
@Config(manifest = "../App/AndroidManifest.xml")
public class AppTest{
@Test
@Config(shadows = {ShadowTimeZone.class})
public void testTimeZone() {
String expectedTimeZoneId = "Europe/London";
TimeZone timeZone = TimeZone.getDefault();
assertThat(timeZone.getID(), equalTo(expectedTimeZoneId));
}
}
ShadowTimeZone.class
@Implements(TimeZone.class)
public class ShadowTimeZone {
@Implementation
public static TimeZone getDefault() {
return TimeZone.getTimeZone("Europe/London");
}
}