gpt4 book ai didi

Android Espresso 测试 : how test an activity's onNewIntent?

转载 作者:太空宇宙 更新时间:2023-11-03 13:44:41 25 4
gpt4 key购买 nike

我想知道是否有一种方法可以测试 Activiy onNewIntent() 方法,我想测试启动一个带有标志单顶设置的 Activity 并测试一些行为,这是如何实现的加 Espresso ?

最佳答案

直接调用:

当您在 Activity 中覆盖 onNewIntent() 时,您可以将其公开:

   @Override
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
}

这样你就可以直接调用它了:

activityTestRule.getActivity().onNewIntent(new Intent())

这确实有效,但不太好,因为您是从测试应用程序线程调用该方法。如果调用 onNewIntent() 会导致 UI 发生任何变化,您将得到一个异常,因为只有创建 View 的线程才能更改它。要解决此问题,您可以强制在 UI 线程上运行

activityTestRule.getActivity().runOnUiThread(() -> {
activityTestRule.getActivity().onNewIntent(new Intent()));
});

这将允许您测试 Activity 的 onNewIntent() 方法。

更好的方法:

根据您提出问题的方式,您还想检查定义为 singleTop 的 Activity 的一些行为。您可以启动一个实际上应该在被测 Activity 中触发 onNewIntent() 的 Intent ,而不是直接调用该方法:

Intent intent = new Intent(activityTestRule.getActivity().getApplicationContext(), ActivityUnderTest.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

InstrumentationRegistry.getTargetContext().startActivity(intent));

只要它被定义为 singleTop,这应该最终调用被测 Activity 的 onNewIntent(),否则它将启动一个新的 Activity 实例。

关于Android Espresso 测试 : how test an activity's onNewIntent?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45036562/

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