robolectric 2 - 有意创造活动

时间:2013-06-19 15:52:46

标签: robolectric

使用.withIntent()创建活动在Robolectric 2中不起作用吗?我正在做以下

    activity = Robolectric.buildActivity(MyActivity.class)
                            .create()
                            .withIntent(intent)
                            .get();

在我的NullPointerException活动中执行以下操作时,我得到onCreate()

Bundle bundle = getIntent().getExtras();

我可以在我的onCreate()中编写一个空检查并通过执行以下操作设置意图但是设置意图并且当Robolectric在创建时已经这样做时再次调用onCreate()方法似乎是多余的Activity个实例。这似乎是一项不必要的工作。

    Robolectric.shadowOf(activity).setIntent(intent);
    activity.onCreate(null);

4 个答案:

答案 0 :(得分:6)

这种情况下,流畅的API类型会引导您走错路......

你想要:

activity = Robolectric.buildActivity(MyActivity.class)
                        .withIntent(intent)
                        .create()
                        .get();

以便在调用onCreate()之前将构思提供给构建器。

答案 1 :(得分:6)

对于较新版本的Robolectric,请使用Robolectric.buildActivity(Class, Intent)

答案 2 :(得分:3)

我发现了我的问题。我没有正确地实例化Intent。当我需要提供Context并将Activity的类发送给

时,我使用no-arg构造函数实例化它

答案 3 :(得分:0)

编辑:它已在2.2版中修复。

我解决了同样的问题。它was reported但尚未提供修复程序。现在,我设法在调用onCreate()之前使用Activity的setter来破解它,利用它的生命周期尚未开始的事实:

Intent intent = new Intent();
MainActivity mainActivity = Robolectric.buildActivity(MainActivity.class)
                                       .create()
                                       .get();
mainActivity.setIntent(intent);
mainActivity.onCreate(null);

<击>