初始化 Activity 进行单元测试

Initialize Activity For Unit Testing

我正在对 Activity.

进行单元测试
private MyActivity _controller;

@Before
public void setUp() throws Exception
{
    ShadowLog.stream = System.out;

    _controller = Mockito.spy(new MyActivity());
}

但是当我去测试它的时候:

@Test
public void testInitRoot() throws Exception
{
    _controller.initRoot();
}

我崩溃了:

java.lang.NullPointerException at android.view.ContextThemeWrapper.initializeTheme(ContextThemeWrapper.java:135)

经过研究,我认为这是因为上下文为空,无法正常获取资源。

我的问题是:我如何真正创建一个 Activity 对象来进行测试?我在 Robolectric 中 运行,所以我不想使用 IntentstartActivity。我正在寻找类似

的内容
MyActivity activity = new MyActivity(validContext);

使用Robolectric.setupActivity()开始你的activity。

private MyActivity mActivity;
mActivity = Robolectric.setupActivity(MyActivity.class);