我遇到了与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);
同样的结果。这取自官方Roboguice项目的Astroboy2Test.class。
谢谢!
答案 0 :(得分:1)
你不能将模拟与Roboguice结合使用,让Robolectric提供你需要的上下文更好。
有一个很好的教程如何从Moritz Post设置所有这些:
http://eclipsesource.com/blogs/2012/09/25/advanced-android-testing-with-roboguice-and-robolectric/
基于这项工作,我前一篇文章发布了一篇文章,如何在功能测试中使用模拟: