10

我正在用 Robolectric 编写单元测试。设置看起来像这样

@RunWith(RobolectricTestRunner.class)
public class MiAirlineActivityTest {
    @Before
    public void setUpFor() {
        Intent intent = new Intent(HOW_TO_PASS_CONTEXT_HERE, MiAirlineActivity.class);
        intent.putExtra(EMPLOYEEID_EXTRA, "username");

        miAirlineActivity = Robolectric.buildActivity(MiAirlineActivity.class)
                                .withIntent(intent).start().get();
    }
}

如何在创建新意图时传递上下文。我按照这个问题的例子。

@David 说,

“......我需要提供一个上下文和它被发送到的 Activity 的类”

我怎么能做到这一点?

注意:请不要将其标记为上述链接问题的重复。我问了一个新问题,因为我无法在那里添加评论。

4

6 回答 6

9

尝试这个

Intent intent = new Intent(Robolectric.getShadowApplication().getApplicationContext(),
                MiAirlineActivity.class);
于 2013-08-21T05:37:08.347 回答
3
miAirlineActivity = Robolectric.buildActivity(MiAirlineActivity.class).create().get();
Intent intent = new Intent();
intent.putExtra(EMPLOYEEID_EXTRA, "username");
miAirlineActivity.setIntent(intent);
miAirlineActivity.onCreate(new Bundle());

这将以所需的意图启动您的活动

于 2013-07-30T17:14:45.673 回答
2

有目的地构建您的活动

Intent intent = new Intent(HOW_TO_PASS_CONTEXT_HERE,MiAirlineActivity.class);
intent.putExtra(EMPLOYEEID_EXTRA, "username");
iAirlineActivity = Robolectric.buildActivity(MiAirlineActivity.class).withIntent(intent).create().get();

在这里查看 roboelectric 文档

于 2014-09-22T09:52:13.850 回答
2

我发布这个是因为当我用谷歌搜索“android roboelectric 3 buildactivity intent”时,这个页面是最好的结果。

testImplementation "org.robolectric:robolectric:3.7.1"

withIntent() 在 robolectric 3 中不再可用。

我使用了下面的代码:

Intent intent = new Intent(HOW_TO_PASS_CONTEXT_HERE,MiAirlineActivity.class);
intent.putExtra(EMPLOYEEID_EXTRA, "username");
iAirlineActivity = Robolectric.buildActivity(MiAirlineActivity.class,intent).create().get();
于 2018-03-15T05:30:58.320 回答
1

Intent intent = new Intent(ShadowApplication.getInstance().getApplicationContext(), Activity.class);

于 2016-01-13T00:14:21.957 回答
0

无需使用构造函数创建上下文和目标 Activity 类。尝试这个:

@Before
public void setUpFor() {
    Intent intent = new Intent();
    intent.putExtra(EMPLOYEEID_EXTRA, "username");

    miAirlineActivity = Robolectric.buildActivity(MiAirlineActivity.class)
                            .withIntent(intent).start().get();
}
于 2016-05-30T08:17:42.153 回答