我创建了以下测试方法,我在其中模拟Settings.Secure并存根该类的getString方法.
@Test
public void testIsDevicePostOwner() throws Exception {
String mockDeviceId = "2c3977ad-0867-49d6-aad8-c2762f373551";
Post mockedPost = mock(Post.class);
Settings.Secure mockedSecure = mock(Settings.Secure.class);
ContentResolver mockContentResolver = mock(ContentResolver.class);
when(mockedSecure.getString(mockContentResolver, Settings.Secure.ANDROID_ID)).thenReturn(mockDeviceId);
}
当我运行测试时,我收到以下错误:
java.lang.RuntimeException: Method getString in android.provider.Settings$Secure not mocked.
有人有什么想法吗?
最佳答案 Settings.Secure.getString是一个静态方法,因此mock(Settings.Secure.class)不会模拟它.即使继承Settings.Secure并创建自己的静态getString也无济于事.
我不确定在这种情况下是否有任何可以帮助你的反射魔法;没有人想到.