Appium - 在重新启动应用程序的情况下最好 - LaunchApp 或 StartActivity

Appium - Which is best in case of relaunching App - LaunchApp Or StartActivity

我使用 Appium 在 C# 中测试 Android 设备。

每次我 运行 测试用例时,我都需要转到主屏幕然后开始用例。这可以通过两种方式实现,使用:LaunchApp 和 StartActivity 函数。

据我所知, LaunchApp 再次启动应用程序,即终止 运行ning 应用程序并从头启动应用程序。但是我最终会进入启动 activity。这将释放内存 space,因此应用程序不会陷入压力或内存不足的问题。 StartActivity 不会杀死应用程序,而是切换到特定的activity。这将与真实案例测试相同。

我上面的说法是真的吗?或者两者之间的确切区别是什么?

总的来说你是对的,但值得在这里添加更多上下文。

工作原理:

launchApp() 默认 执行以下操作:

  • 检查是否安装了应用程序
  • 执行快速重置(包括应用停止、缓存清理等)
  • 通过 launch activity
  • 启动应用程序
  • 检查包 + activity 以匹配您在功能中设置的包(appWaitPackageappWaitActivity

startActivity 执行以下操作:

  • 通过 adb shell 运行命令以启动 指定的 activity
  • 检查包 + activity 以匹配您设置为参数的包

现实生活中的例子,例如具有 LoginActivity -> NavigationActivity -> WhateverActivity 流量的应用程序:

  1. 您已登录应用程序

a) launchApp() 将清理应用程序并移动返回LoginActivity

b) startActivity(NavigationActivity) 将直接启动 NavigationActivity,因此您无需登录该应用程序。

  1. 您尚未登录该应用程序

a) launchApp() 与第一季度相同

b) startActivity(NavigationActivity) 将失败并显示 Incorrect package and activity,因为应用流程不允许这样做。

我在每次测试前使用 startActivity 来达到 start point,这有助于通过避免多次重新安装和重新登录应用程序来加速测试套件。