我需要测试应用程序从干净状态启动的用例 - 即在测试开始之前该进程尚未运行。从我从logcat看到的,所有的测试测试都在一个单独的流程实例/会话下运行,因此我的测试结果取决于它是否以#1运行。它不应该是这样 - 我们都知道,单元测试(或仪器测试)应该是自主的。
有没有办法使用标准的Android检测工具和函数我可以强制TestRunner在给定的测试之前重启过程?如果没有,是否有黑客或第三方图书馆可以帮助我实现这一目标?或者有什么方法我可以特别说测试X 必须首先运行(最糟糕的选择,但仍然)?
具体来说,我的测试涉及通过意图启动活动,以及除了活动启动模式(例如FLAG_ACTIVITY_CLEAR_TOP
)和进程状态之外的意图标记(例如singleTop
),非常这决定了测试的结果。
答案 0 :(得分:1)
假设您使用的是Espresso,没有一种清除方法。这是因为Espresso与应用程序的运行过程相同,因此杀死该应用程序将杀死Espresso。
问题是,您是否需要在Application
中执行所有逻辑,还是可以将其移植到Activity.onCreate()
中?使用Espresso重新启动Activity
是可行的。如果由于全局/子集而需要重新启动应用程序,则可能有必要将其删除。如果无法做到这一点,您可以查看其他测试自动化框架,例如Appium,对此有一些支持。