-1
有人可以幫助我理解如何解決此異常?java.lang.NullPointerException:無法獲取陰影爲null ShadowPreferenceManager
我引用Robolectric tests fail on shadowOf但我已經使用this
訪問SharedPreferences
即
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
@Config(emulateSdk = 18)
@RunWith(RobolectricTestRunner.class)
public class SomeClassTest {
private Context context;
private SomeClassTest someClassTest;
private SharedPreferences sharedPreferences;
@Before
public void setup() throws Exception {
context = mock(Context.class);
sharedPreferences = ShadowPreferenceManager.getDefaultSharedPreferences(context);
someClassTest = new SomeClassTest(context);
}
@Test
public void someClassProduction() {
when(someClassTest.getEnvironment()).thenReturn("PRODUCTION");
when(someClassTest.getBaseUrl()).thenReturn("https://www.someUrl.com/v1/");
assertTrue(someclassTest.getTestUrl().equals("https://www.someurl.com/v1/counts.json")
}
}
java.lang.NullPointerException: can't get a shadow for null
at org.robolectric.bytecode.ShadowWrangler.shadowOf(ShadowWrangler.java:442)
at org.robolectric.Robolectric.shadowOf_(Robolectric.java:1059)
at org.robolectric.Robolectric.shadowOf(Robolectric.java:477)
at org.robolectric.shadows.ShadowPreferenceManager.getDefaultSharedPreferences(ShadowPreferenceManager.java:21)
at android.preference.PreferenceManager.getDefaultSharedPreferences(PreferenceManager.java)
我們錯過了一些重要的信息:哪些引用是空的?你可以在調用「getDefaultSharedPreferences(...)」之前檢查「context」的值以確保你的「mock(...)」方法正常工作嗎? – bdulac 2014-12-08 07:14:58
Gotcha,@bdulac我調試了失敗的測試 - 上下文不爲空。 – 2014-12-08 16:38:28