【发布时间】:2014-12-08 05:14:59
【问题描述】:
有人可以帮助我了解如何解决此异常吗?
我引用了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)
【问题讨论】:
-
我们遗漏了一些重要信息:哪个引用是 null ?您能否在调用“getDefaultSharedPreferences(...)”之前检查“context”的值以确保您的“mock(...)”方法正常工作?
-
知道了,@bdulac 我调试了失败的测试 - 上下文不为空。
标签: java android unit-testing nullpointerexception mockito