gpt4 book ai didi

android - 使用 Volley 和 Dagger 获取 Robolectric ShadowApplication 时的 NPE

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:29:45 24 4
gpt4 key购买 nike

在我的 Android 应用程序中,我设置了 Volley。

Robolectric.application 已初始化,所有其他测试运行顺利。尝试获取模拟的 HTTP 响应时出现此错误。

这是我的测试:

@RunWith(MyRobolectricTestRunner.class)
public class ApiTests {

@Inject
protected Api api;

@Before
public void setUp() {
ObjectGraph.create(new AndroidModule(Robolectric.application), new TestApplicationModule()).inject(this);
}

@Test
public void shouldGetErrorList() throws Exception {
Project project = new Project("test", "test", "test", DateTime.now());
addPendingProjectsErrorsResponse("response.json"); //adding response to FakeHttpLayer

api.getProjectErrors(project, new Listener<ProjectErrors>() {
@Override
public void onResponse(ProjectErrors response) {
assertNotNull(response);
}
}, new ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
throw new RuntimeException(error);
}
}
);
}
}

这是我得到的错误:

Exception in thread "Thread-3" java.lang.NullPointerException
at org.robolectric.shadows.ShadowLooper.getMainLooper(ShadowLooper.java:59)
at android.os.Looper.getMainLooper(Looper.java)
at org.robolectric.Robolectric.getUiThreadScheduler(Robolectric.java:1301)
at org.robolectric.shadows.ShadowSystemClock.now(ShadowSystemClock.java:15)
at org.robolectric.shadows.ShadowSystemClock.uptimeMillis(ShadowSystemClock.java:25)
at org.robolectric.shadows.ShadowSystemClock.elapsedRealtime(ShadowSystemClock.java:30)
at android.os.SystemClock.elapsedRealtime(SystemClock.java)
at com.android.volley.VolleyLog$MarkerLog.add(VolleyLog.java:114)
at com.android.volley.Request.addMarker(Request.java:174)
at com.android.volley.CacheDispatcher.run(CacheDispatcher.java:92)

最佳答案

我有同样的错误并通过使用我自己的(和丑陋的)SystemClock 影子来避免它。

影子类:

@Implements(value = SystemClock.class, callThroughByDefault = true)
public static class MyShadowSystemClock {
public static long elapsedRealtime() {
return 0;
}
}

测试代码:

@Test
@Config(shadows = { MyShadowSystemClock.class, ... })
public void myTest() {
}

关于android - 使用 Volley 和 Dagger 获取 Robolectric ShadowApplication 时的 NPE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17008192/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com