有人可以帮我理解如何修复此异常吗?
我引用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)
答案 0 :(得分:1)
原来,我必须用context = mock(Context.class)
context = Robolectric.application
这是更新后的测试:
@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 = Roboelectric.application;
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")
}
}