gpt4 book ai didi

android - 如何对我的 Android 服务启动特定 Activity 进行单元测试?

转载 作者:太空狗 更新时间:2023-10-29 13:19:15 25 4
gpt4 key购买 nike

根据 this other question ,可以从 Activity 开始一个 Service

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

ActivityUnitTestCase 有有用的方法 getStartedActivityIntent() 。我已经能够通过将 Activity 传递到其 Service 方法中来测试 ActivityUnitTestCase 启动 ContextWrapper 的相反情况,就像在 this other question 中一样。

但是 setActivityContext() 似乎没有 ServiceTestCasegetStartedActivityIntent() 的等价物可以帮助我。我能做什么?

最佳答案

事实证明答案在 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;
}

关于android - 如何对我的 Android 服务启动特定 Activity 进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31095115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com