我必须在这里遗漏一些明显的东西:
我也在 Robotium 的帮助下在设备上运行仪器测试用例。在某些时候,我正在测试的应用程序会触发默认的电子邮件撰写活动。
我想知道的是:如何关闭该活动以便再次显示我的应用活动?至少出于一个原因需要这样做:在当前测试用例完成后,电子邮件活动仍处于前台,这会阻止下一个测试用例正常运行。
我尝试将所需的返回键发送到电子邮件活动 - 使用this.sendKeys(KeyEvent.KEYCODE_BACK)
或solo.goBack()
- 但没有运气。
如果我运行或solo.getCurrentActivity()
获得对包中最顶层活动this.getActivity()
的引用,但无法获取实际的前台活动。此外,提到的直接进入我的活动,而不是电子邮件。sendKeys/goBack
当我的应用启动 Play Store 主要活动时,也会出现同样的问题。
我意识到电子邮件活动不是我正在测试的包的一部分,这可能是问题的一部分。
那么,有没有办法关闭电子邮件活动?
编辑
现在我坚持@Joe Malin 的第一个建议:
在我的 ViewModel(或 Controller)中,有一个private static boolean _productionMode = true;
并且有一些仅在测试期间使用的辅助方法(如果在某些内部辅助类中更好):
public void dontLaunchExternalApps()
{
_productionMode = false;
}
然后在一些 ViewModel 常规方法中:
if (_productionMode)
{
launchSomeExternalApp();
}
else
{
// Do Nothing Or Set Some Internal Flag
}