Android JUnit测试中Roboguice.setBaseApplicationInjector中的NullPointerException
我遇到了一个与Roboguice和JUNIT相关的问题。实际上,我正在做一个非常小的测试来运行它,代码: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
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进行存根。现在,我面临这个错误: