29

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

标准的 Android 仪器测试工具和功能有什么方法可以强制 TestRunner 在给定测试之前重新启动进程?如果没有,是否有黑客或第三方库可以帮助我实现这一目标?或者有什么办法我可以明确地说必须首先运行测试 X(最坏的选择,但仍然如此)?

具体来说,我的测试与通过意图启动活动有关FLAG_ACTIVITY_CLEAR_TOP,除了活动启动模式(例如singleTop)和流程状态之外,意图标志(例如)在很大程度上决定了测试的结果。

4

1 回答 1

1

假设您正在使用 Espresso,没有一种干净的方法可以解决这个问题。这是因为 Espresso 与应用程序在同一进程中运行,因此终止应用程序将终止 Espresso。

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

于 2020-06-13T17:32:58.753 回答