我如何对我的Android服务是否启动了特定的活动进行单元测试



根据另一个问题,可以从Service启动Activity

ServiceTestCase中,我如何对正确的Intent传递给startActivity()进行单元测试?

CCD_ 6具有有用的方法CCD_。我已经能够在ActivityUnitTestCase中通过将ContextWrapper传递到其setActivityContext()方法中来测试相反的情况——Activity启动Service,就像在另一个问题中一样。

ServiceTestCase似乎没有getStartedActivityIntent()setActivityContext()的等价物,这对我有帮助。我能做什么?

证明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;
}

相关内容

  • 没有找到相关文章

最新更新