Robotium robotium 中发送广播的事例和遇到的问题

testBlue · 2016年09月03日 · 最后由 testBlue 回复于 2016年09月06日 · 1738 次阅读

事情是这样的, 我之前在论坛中描述过这么一个问题,我用 robotium 执行用例的时候,用例 1、2、3 是按顺序执行的,2 的开始依托于 1 的结果,我要的执行方式是 1、12、123,每次都会重新执行一遍,很多大牛都给予我回复了,在此表示衷心感谢,小弟我最后一次,还想用代码方式实现一次,如果不行,这个方法我就不再尝试了。
言归正传,robotium 不支持跨进程,我在 robotium 中试过直接调用 Runtime.getRuntime().exec("pm clear + 包名称"),这是我能想到的最简单的清除 app 缓存重新加载的方法,但是实现失败,提示 process crash,然后我想到了不在 robotium 中添加这个方法,我单独写一个服务,robotium 支持发送广播,我通过广播的方式告知另一个服务,启动这个服务后,它会监听我发送的广播,一旦截取到,它会调用 Runtime.getRuntime().exec("pm clear + 包名称"),这个方法从而相当于我第三方的形式,帮助我清除了 ap 缓存,从而实现我之前的愿望,但是这个方式有两点问题:
(1)接收到广播后,调取 Runtime.getRuntime(),执行无效果。
(2)如果有效果后,那 app 缓存被清除了,robotium 如何再次重新启动,启动后它的进程其实已经被我杀死了,它会重新执行,那我还是不能实现 1、12、123 的方式(清除缓存后它就不会记录上次登录方式了,这样会导致它不知道从哪里开始,哪里结束)。
以上是我能想到的方法和遇到的问题,大神们用 robotium 的时候真的不会遇到同样的问题吗。。。

共收到 7 条回复 时间 点赞

说白了,你只是要清除 app 本身缓存?
你百度一下清理 app 缓存的代码,用 robotium 调用就能清除

—— 来自 TesterHome 官方 安卓客户端

请使用 markdown 啊

uiautomator 执行 pm 可以 已尝试 成功

—— 来自 TesterHome 官方 安卓客户端

#1 楼 @heyniu 对的,我就是要清除 app 的缓存,您的意思是直接调用 android 代码吗

#3 楼 @UDLD uiautomator 的确实可以,但是这不是 robotium 么。。。貌似是不行的

#4 楼 @testblue 代码估计你有点苦难,你 robotium 调用 uiautomator 去清除吧,但是清除被测 app 进程会杀掉哦,连同 robotium 一起

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册