事情是这样的, 我之前在论坛中描述过这么一个问题,我用 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 的时候真的不会遇到同样的问题吗。。。