Android JUnit测试中Roboguice.setBaseApplicationInjector中的NullPointerException

Android JUnit测试中Roboguice.setBaseApplicationInjector中的NullPointerException,android,unit-testing,junit,mockito,roboguice,Android,Unit Testing,Junit,Mockito,Roboguice,我遇到了一个与Roboguice和JUNIT相关的问题。实际上,我正在做一个非常小的测试来运行它,代码: import junit.framework.Assert; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import roboguice.RoboGuice; im

我遇到了一个与Roboguice和JUNIT相关的问题。实际上,我正在做一个非常小的测试来运行它,代码:

import junit.framework.Assert;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import roboguice.RoboGuice;
import android.app.Application;
import android.content.Context;

public class FansworldClientTest {
    TaskClient client;
    @Mock
    Application application;
    @Mock
    Context context;

    @Before
    public void setup() {
        MockitoAnnotations.initMocks(this);
        client = RoboGuice.getInjector(application).getInstance(TaskClient.class);
    }
    @Test
    public void getTimestampTest() {
        Assert.assertNotNull(application);
        Assert.assertNotNull(context);
        Assert.assertNotNull(client);
    }
    @After
    public void teardown() {
        RoboGuice.util.reset();
    }
}
mvn test命令向我抛出了这样一个问题:

java.lang.NullPointerException:null 位于roboguice.roboguice.setBaseApplicationInjector(roboguice.java:116) 位于roboguice.roboguice.getBaseApplicationInjector(roboguice.java:59) 位于com.app.api.client.TaskClientTest.setup(TaskClientTest.java:38)

我使用的是Roboguice 2.0、Junit 4.8.2和Mockito 1.9.5。我也在尝试这样做:

MockitoAnnotations.initMocks(this);
RoboGuice.setBaseApplicationInjector(application, RoboGuice.DEFAULT_STAGE);
RoboGuice.getInjector(application).getInstance(FansworldClient.class);
同样的结果。这是取自官方机器人指南项目的同一个Astroboy2Test.class


谢谢

不能将mock与Roboguice结合使用,最好让Robolectric提供您需要的上下文

Moritz Post提供了一个很好的教程,介绍如何设置所有这些:

基于这项工作,我不久前发布了一篇文章,介绍了如何在功能测试中使用模拟:


因此,我可以在不使用Mockito或任何其他模拟库的情况下将Roboguice与Robolectric结合使用?当然,只是模拟库大大简化了自定义模拟的创建,因为您需要编写更少的样板代码,并且可以使用Mockito的流畅API进行存根。现在,我面临这个错误: