在学习Robotium框架的时候,遇到了不少的坑,这里大概描述一下遇到的问题,希望遇到相同问题的同学可以看看,如果可以解决的自行解决,不能解决的可以一同交流,当然还有其他补充可以提出来共享哈。
1. Test run failed:Instrumentationrun failed due to “Process crashed”。
参考网址: http://www.robotium.cn/archives/915 虽然在tearDown()方法中加入了solo.finishOpenedActivities()方法,但是会出现莫名的Process crashed,这个网址上说的是:测试应用和被测应用在同一个进程中,在执行该方法之前,会调用Instrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK)。表明被测应用的Activity可能会先执行onStop()和onDestroy方法。开发可能加入了
System.exit(0);
Android.os.Process.killProcess(android.os.Process.myPid());
按照他网站上说的方式我试过,没有成功,不知道什么原因。然后只能让开发将上边的出错代码注释掉才成功了(当然被测应用不能加任何扰码)。
2. Instrumentationrun failed due to ‘java.lang.ClassNotFoundException’。
一般这种情况是android的sdk依赖库错误。可能是robotium的jar包和junit支持导入有问题。具体可以在你的测试项目下新建一个libs文件夹,将robotium-solo-5.2.1.jar拷贝到里边(每次打开你的工程的时候都会将libs下的jar包自动配置到你的环境中),还要在Properties->JavaBuild Path->Order and Export中选中这个jar包。还要在Properties->Java Build Path->Libraries->Add Libraray中选择junit(junit3、4都可以),然后可以重新clean你的工程。大家可以参看下边链接:
http://www.zhihu.com/question/26687635
http://www.51testing.com/html/65/n-848765.html
3. Testcase只执行一条,第二条就会卡住问题。
每次运行case都会执行setUp和tearDown方法,所以,会一次次拉取应用进行测试,为什么会在执行第二条卡住,通过添加Log分析是在tearDown方法中没有干掉所有activity才导致第二次没有拉取应用(至于为什么没有报错,暂时还没有搞清楚)。在tearDown方法中加入solo.finishOpenedActivities();
参考网址: http://bbs.csdn.net/topics/390100625?page=1http://www.robotium.cn/archives/273
4. 其他常见问题总结不再赘述,直接上网站查找: http://www.daotest.com/archives/388
大家也可以上这个网站查找更多框架学习资料:http://www.daotest.com/archives/category/robotium
欢迎测试新人、大神加入测试群:696128394,一起交流学习。
网友评论