测量应用程序响应时间/等待Android中的下一个活动准备就绪?

时间:2012-10-01 02:37:41

标签: android automated-tests robotium monkeyrunner

我正在开发一个自动化测试套件,以获取某些Android应用程序(我无法访问其源代码)的计时信息。

我还没有决定是否使用MonkeyRunner或Robotium。我主要担心的是在我对UI执行操作(比如键入URL),如何确定Android何时完成我的请求后,所有下一个活动的组件都可以使用了,我已准备好获得结果并采取下一步行动(说我要求的页面已满载,或者电子邮件已完全打开)。

对于Web浏览器,这很简单,我可以使用onProgressChaged()或onPageFinished()。但我正在寻找一种适用于所有应用程序的更通用的方法。我认为Instrumentation.waitForIdleSync()或Instrumentation.waitForIdle()可能是我最好的选择。

然而,就我读到的关于MonkeyRunner和Robotium的文档而言,它们似乎都没有与waitForIdle集成。在Robotium中,我可以发送一些输入然后获取输出,但似乎没有一种简单的方法让我知道输出何时就绪,并且可能在那时调用回调。 MonkeyRunner在这方面也很相似。

所以我想知道有没有一种简单的方法可以让我知道我的请求已经完成的时间(用户所感知的),而不是我自己重新实现Robotium功能?

非常感谢。

2 个答案:

答案 0 :(得分:0)

这可能非常棘手,完全取决于你要求monkeyrunner做什么。 例如,如果你有一个monkeyrunner脚本,并发出启动计算器应用程序的命令,你可以让python子进程监视adb logcat -b事件输出,以确定计算器app是否已经启动。如果您要按计算器中的按钮,则可以休眠1或2秒。

但是没有直接的方法来确定android是否已经处理了你的事件。仅仅因为,每项操作都有所不同并且需要时间。

答案 1 :(得分:0)

你可以把断言放在robotium中,然后在计时器之前和之后使用system.nanoseconds()。

这可能是获取时间信息的简便方法