pet*_*hio 4 android robolectric
我在TimeZone.getDefault()使用 Robolectric 进行阴影处理时遇到了一些麻烦,因为我的 AppTest.class 没有在 ShadowTimeZone.class 中使用我的静态阴影 mwthod。
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));
}
}
Run Code Online (Sandbox Code Playgroud)
ShadowTimeZone.class
@Implements(TimeZone.class)
public class ShadowTimeZone {
@Implementation
public static TimeZone getDefault() {
return TimeZone.getTimeZone("Europe/London");
}
}
Run Code Online (Sandbox Code Playgroud)
您根本不需要使用阴影。使用TimeZone.setDefault(TimeZone.getTimeZone("Europe/London"))您的测试之前,或者在@Before设置方法。
如果您仍然想使用影子,则 getDefault 的实际签名是public static synchronized,因此您可能需要添加synchronized到您的影子方法中以进行匹配。
| 归档时间: |
|
| 查看次数: |
798 次 |
| 最近记录: |