我需要测试一个应用程序从干净状态启动的用例 - 即在测试开始之前该进程尚未运行。从我看到的 logcat
,所有仪表测试都在一个流程实例/ session 下运行,因此在我的情况下,测试的结果取决于它是否作为#1 运行。不应该这样——众所周知,单元测试(或仪器测试)应该是自主的。
标准的 Android 仪器测试工具和功能有什么方法可以强制 TestRunner 在给定测试之前重新启动进程?如果没有,是否有黑客或第三方库可以帮助我实现这一目标?或者有什么办法我可以明确地说必须首先运行测试 X(最坏的选择,但仍然如此)?
具体来说,我的测试涉及通过 Intent 启动 Activity ,以及 Intent 标志(例如 FLAG_ACTIVITY_CLEAR_TOP
)以及 Activity 启动模式(例如 singleTop
)和流程状态,很大程度上决定了结果考试。
最佳答案
假设您正在使用 Espresso,没有一种干净的方法可以解决这个问题。这是因为 Espresso 与应用程序在同一进程中运行,因此终止应用程序将终止 Espresso。
问题是,你需要在你的Application
中执行的所有逻辑吗?或者可以移植到您的Activity.onCreate()
?随着 Espresso 重新启动 Activity
是可行的。如果由于全局/单例需要重新启动应用程序,则可能需要删除这些。如果无法做到这一点,您可以查看其他测试自动化框架,例如 Appium这对此有一些支持。
关于android - 我可以让仪器测试杀死并重新启动应用程序进程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32743078/