今天遇到一个棘手的问题

用robotium框架真机测试客户端时 跑到一半会crash

搜了一堆资料终于解决了

我的程序引起crash主要原因有两个:

1.用Robotium测试框架跑多个用例(写在同一个类里),只有第一个通过,第二个会卡顿, 导致crash

原因是若同一个类里写多个测试方法,每个测试方法都会执行一次setUp() 和tearDown()方法,所以每一个用例开始时都是用的同一个启动Activity,如果你上一个用例退出时没有返回到那个Activity,执行下一个用例时会找不到启动Activity,就报错了

解决方法:

在tearDown()里加上返回到开始Activity的方法:solo.goBackto("startActivity");

2.再跑时,发现程序还是会卡在第一个用例结束时无法退出,再检查,

tearDown方法写错了,之前按照网上资料写的,并不好使,还是会引起崩溃

@Override
public void tearDown() throws Exception {

try {
solo.finalize();// 执行清理工作
} catch (Throwable e) {
e.printStackTrace();
}
Activity myActivity=getActivity();
if(myActivity!=null)
myActivity.finish();// 测试结束,关闭应用程序
super.tearDown();

}

把关闭方法修改成solo.finishOpenedActivities();  OK了,至于为什么我也没有研究,有谁知道的还请留言告诉我,不胜感激~

最后,我的工程整个tearDown方法如下:

@Override
public void tearDown() throws Exception {
//关闭之前先回到主页面
Boolean notClosed = true;
while (notClosed) {
solo.goBack();
if (solo.waitForText("确定退出客户端吗", 1, 100, false, true)) {
notClosed = false;
solo.clickOnButton("取消");
break;
}
}
//关闭
try {

this.solo.finishOpenedActivities();
} catch (Throwable e) {
e.printStackTrace();
}
Activity myActivity=getActivity();
if(myActivity!=null)
myActivity.finish();
super.tearDown();
}

解决Robotium测试用例crash问题的更多相关文章

  1. 利用 innodb_force_recovery 解决MySQL服务器crash无法重启问题

    背景      MySQL服务器因为磁盘阵列损坏机器crash,重启MySQL服务时 报如下错误: InnoDB: Reading tablespace information from the .i ...

  2. 【腾讯优测干货】看腾讯的技术大牛如何将Crash率从2.2%降至0.2%?

    小优有话说: App Crash就像地雷. 你怕它,想当它不存在.无异于让你的用户去探雷,一旦引爆,用户就没了. 你鼓起勇气去扫雷,它却神龙见首不见尾. 你告诫自己一定开发过程中减少crash,少埋点 ...

  3. robotium从入门到放弃 二 第一个实例

    1.导入被测试的源码 我们先下载加你计算器源码,下载地址: https://robotium.googlecode.com/files/AndroidCalculator.zip 如果地址被墙无法现在 ...

  4. 一个std::sort 自定义比较排序函数 crash的分析过程

    两年未写总结博客,今天先来练练手,总结最近遇到的一个crash case. 注意:以下的分析都基于GCC4.4.6 一.解决crash 我们有一个复杂的排序,涉及到很多个因子,使用自定义排序函数的st ...

  5. robotium之does not have a signature matching问题

    今天发现个很low的问题,脚本都写好了,运行Robotium测试用例时报错如下: [2017-03-01 09:58:54 - baiduAppTest] Test run failed: Permi ...

  6. java spring 等启动项目时的异常 或 程序异常的解决思路

    今天搭建ssm项目的时候,因为pagehelper的一个jar包没有导入idea的web项目下的lib目录中,异常报错找不到pagehelper,这个问题在出异常的时候疯狂crash,让人心情十分不舒 ...

  7. 美团外卖Android Crash治理之路

    Crash率是衡量一个App好坏的重要指标之一,如果你忽略了它的存在,它就会愈演愈烈,最后造成大量用户的流失,进而给公司带来无法估量的损失.本文讲述美团外卖Android客户端团队在将App的Cras ...

  8. Robotium测试报告的生成方法(上)

    7.1 使用junit-report生成报告 这个是参考网上的:http://www.xuebuyuan.com/2148574.html,经我个人验证是可行的方法,网上写的挺详细的,不过有些不太清楚 ...

  9. 重签名问题:does not have a signature matching

    今天在家里电脑重签名过的apk拿到公司来用装到模拟器上,运行Robotium测试用例时,报了如下错误,原本以为是工程里的activity名称和包名写错了呢,检查了一遍发现木有错误呀.... 好吧,那我 ...

随机推荐

  1. Eclipse选中变量名,相同变量都变色显示 的设置

    ava文件的设置"Window"-"preferences"-"Java"-"Editor"-"Mark Oc ...

  2. 快速学习javascript对象-遍历对象

    为了方便了解每个javascript对象包含的方法,我写一个函数. function GetCollection(obj){ try{ if(obj){ var sType=""; ...

  3. Android 圆形背景shape定义

    <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http: ...

  4. 远程连接mysql数据慢的问题

    由于公司没有服务器,买的阿里云的服务器用于开发,所以就在本地连接服务器的mysql. 连接很慢,打开表也很慢,一开始没多想,以为是网络慢而已. 最近,开发经常要使用navicat连接数据库,实在是太慢 ...

  5. bugfree搭建

  6. IO-04. 混合类型数据格式化输入

    /** *A4-IO-04. 混合类型数据格式化输入 *C语言实现 *测试已通过 */ #include "stdio.h" int main() { float m1,m2; i ...

  7. 打造坚固的安全的Linux服务器(ssh登录篇)

      Nov 3 01:22:06 server sshd[11879]: Failed password for root from 123.127.5.131 port 38917 ssh2Nov ...

  8. wx.Notebook

    wx.Notebook This class represents a notebook control, which manages multiple windows with associated ...

  9. mysql insert和前台显示乱码

    近期在搞服务端.遇到问题例如以下, 在mysql中插入中文乱码.或mysql中中文正常显示,但jsp在前台显示mysql中的中文时乱码. 解决方法,进入mysql控制台,运行 SET characte ...

  10. JFinal开发web项目出现故障小记

    导读 作为中国优秀的开源项目之中的一个JFinal有着极速开发的优点,是中小型应用开发的首选.在导师的建议下.我使用了JFinal来开发一个Java服务端应用,官方教程非常easy.就几十页(当然是中 ...