我可以通过检测测试来杀死并重新启动应用程序进程吗?

Nil*_*zor 21 android unit-testing android-lifecycle android-instrumentation

我需要测试应用程序从干净状态启动的用例 - 即在测试开始之前进程尚未运行.从我从logcat看到的,所有的测试测试都在一个单独的流程实例/会话下运行,因此我的测试结果取决于它是否以#1运行.不应该这样 - 我们都知道,单元测试(或仪器测试)应该是自主的.

有没有办法使用标准的Android检测工具和函数我可以强制TestRunner在给定的测试之前重启过程?如果没有,是否有黑客或第三方图书馆可以帮助我实现这一目标?或者有什么方法我可以特别说测试X 必须先运行(最坏的选择,但仍然)?

具体来说,我的测试涉及通过意图启动活动FLAG_ACTIVITY_CLEAR_TOP,除了活动启动模式(例如singleTop)和过程状态之外的意图标志(例如)非常规定了测试的结果.

Thi*_*Guy 1

假设您正在使用 Espresso 运行,则没有一种干净的方法可以实现这一点。这是因为 Espresso 与应用程序在同一进程中运行,因此终止应用程序也会终止 Espresso。

问题是,您是否需要在您的 中执行所有逻辑Application,或者可以将其移植到您的 中吗Activity.onCreate()?使用 Espresso 重新启动Activity是可行的。如果由于全局/单例而需要重新启动应用程序,则可能需要删除它们。如果无法做到这一点,您可以查看其他测试自动化框架,例如Appium,它对此有一些支持。