我正在用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();
}
}
如何在创建新意图时传递上下文。 我按照this问题中的示例进行了操作。
@David说,
" ...我需要提供一个上下文以及它被发送到的活动的类"
我究竟能做到这一点?
注意:请勿将其标记为上述链接问题的副本。我问了一个新问题,因为我无法在那里添加评论。
答案 0 :(得分:8)
试试这个
Intent intent = new Intent(Robolectric.getShadowApplication().getApplicationContext(),
MiAirlineActivity.class);
答案 1 :(得分: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 docs here
答案 2 :(得分: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();
答案 3 :(得分:1)
Intent intent = new Intent(ShadowApplication.getInstance()。getApplicationContext(),Activity.class);
答案 4 :(得分:0)
miAirlineActivity = Robolectric.buildActivity(MiAirlineActivity.class).create().get();
Intent intent = new Intent();
intent.putExtra(EMPLOYEEID_EXTRA, "username");
miAirlineActivity.setIntent(intent);
miAirlineActivity.onCreate(new Bundle());
这将以期望的意图启动您的活动
答案 5 :(得分:0)
无需使用构造函数创建上下文和目标Activity类。试试这个:
@Before
public void setUpFor() {
Intent intent = new Intent();
intent.putExtra(EMPLOYEEID_EXTRA, "username");
miAirlineActivity = Robolectric.buildActivity(MiAirlineActivity.class)
.withIntent(intent).start().get();
}