我能否获取仪表测试来终止并重新启动应用程序进程?

30

我需要测试一个使用用例,其中应用程序从干净状态开始-即该进程在测试开始之前未运行。从我从logcat中看到的,所有的仪器测试都在一个单独的进程实例/会话下运行,因此在我的情况下测试的结果取决于它是否作为#1运行。这不应该是这样-正如我们所知道的,单元测试(或仪器测试)应该是自治的。

使用标准的Android仪器测试工具和功能,有没有办法强制TestRunner在给定的测试之前重新启动进程?如果没有,是否有黑客技巧或第三方库可以帮助我实现这一目标?还是有没有方法可以明确指出要先运行测试X (最差的选项但仍然可行)?

具体而言,我的测试涉及通过意图启动活动,以及意图标志(例如FLAG_ACTIVITY_CLEAR_TOP )除了活动启动模式(例如singleTop )和进程的状态,这极大地影响测试的结果。


3
你有找到解决方法吗? - ImMathan
你想从 Espresso 测试中重新启动应用程序吗? - Dipankar Baghel
你是否考虑过在每次测试时终止并重新启动应用程序进程来解决问题? - Giorgio Antonioli
1个回答

1
假设您正在使用Espresso,没有一种干净的方法可以完成此操作。这是因为Espresso在与应用程序相同的进程中运行,因此杀死应用程序将杀死Espresso。
问题是,您是否需要在Application中执行所有要执行的逻辑,或者它是否可以移植到Activity.onCreate()中?使用Espresso重新启动Activity是可行的。如果由于全局/单例而需要重新启动应用程序,则可能需要删除这些内容。如果无法完成此操作,您可以查看其他测试自动化框架,如Appium,该框架对此提供了一些支持。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接