根据this other question,可以从Activity
开始Service
。
如何在ServiceTestCase
单元测试中将正确的Intent
传递给startActivity()
?
ActivityUnitTestCase
有一个有用的方法getStartedActivityIntent()
。我已经能够通过将Activity
传递到Service
ActivityUnitTestCase
来ContextWrapper
setActivityContext()
来ServiceTestCase
getStartedActivityIntent()
方法,如this other question。
但是setActivityContext()
似乎没有{{1}}或{{1}}的等价物来帮助我。我该怎么办?
答案 0 :(得分:2)
原来答案是the docs for ServiceTestCase
。
等同于setActivityContext()
,它被称为setContext()
。因此,您可以拨打getContext()
,使用ContextWrapper
打包上下文,然后拨打setContext()
,就像使用ActivityUnitTestCase
一样。例如:
private volatile Intent lastActivityIntent;
@Override
protected void setUp() throws Exception {
super.setUp();
setContext(new ContextWrapper(getContext()) {
@Override
public void startActivity(Intent intent) {
lastActivityIntent = intent;
}
});
}
protected Intent assertActivityStarted(Class<? extends Activity> cls) {
Intent intent = lastActivityIntent;
assertNotNull("No Activity started", intent);
assertEquals(cls.getCanonicalName(), intent.getComponent().getClassName());
assertTrue("Activity Intent doesn't have FLAG_ACTIVITY_NEW_TASK set",
(intent.getFlags() & Intent.FLAG_ACTIVITY_NEW_TASK) != 0);
return intent;
}