adb4robotium跨进程框架抛出InputStream cannot be null的异常的解决方案

转自:http://blog.csdn.net/qingchunjun/article/details/43448371

之前我写的关于利用adb框架来进行robotium跨进程操作的文章中,有些朋友使用真机进行测试时,遇到一个比较奇怪的问题,会抛出"InputStream cannot be null"的异常。经过检查发现是由于代码中要生成的uidump.xml文件并没有在目标文件夹中生成,导致后面在使用File对象处理时,直接抛异常了。

这个问题其实比较怪异,经分析问题原因是跟adb命令在robotium框架中使用时,由于robotium是运行在手机端的,它跟在PC上使用有着比较大的差异。在手机端运行adb命令必须严格遵循android系统对权限的规定。具体的分析可以见我的这篇文章:http://blog.csdn.net/qingchunjun/article/details/43343735。所以在真机环境下,由于环境的不同,原框架代码是不能直接使用的,需要相应的修改,主要是修改生成uidump.xml那个方法,以及input命令的发送方式(由于在android中不同进程要模拟按键操作需要injectEvent权限,所以必须要root之后才能使用)。具体的代码及修改后的jar可以从这里下载:http://download.csdn.net/detail/qingchunjun/8508239。

时间: 2024-10-27 13:34:42

adb4robotium跨进程框架抛出InputStream cannot be null的异常的解决方案的相关文章

override(重写,覆盖) 1、方法名、参数、返回值相同。 2、子类方法不能缩小父类方法的访问权限。 3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。 4、存在于父类和子类之间。 5、方法被定义为final不能被重写。 overload(重载,过载) 1、参数类型、个数、顺序至少有一个不相同。 2、不能重载只有返回值不同的方法名。 3、存在于父类和子

override(重写,覆盖) 1.方法名.参数.返回值相同. 2.子类方法不能缩小父类方法的访问权限. 3.子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常). 4.存在于父类和子类之间. 5.方法被定义为final不能被重写. overload(重载,过载) 1.参数类型.个数.顺序至少有一个不相同.   2.不能重载只有返回值不同的方法名. 3.存在于父类和子类.同类中. 方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现. 重写(O

第六十一条:抛出与抽象相对应的异常

想想这样一种情况:方法B抛出了一个受检的异常 ,那么方法A在内部调用方法B时,面对方法B抛出的受检异常,可以选择继续抛出向上传播这个异常, 也可以捕获这个异常进行处理.究竟是向上传播抛出,还是捕获处理呢??? 有一个指导原则是:抛出与抽象想对应的异常. 例如如果方法B抛出了NoSuchElementException这个受检异常,然而在方法A中调用方法B时,根据方法A中的逻辑,当遇到NoSuchElementException 异常时,抛出一个IndexsOutOfBoundsException

LDAP抛出Error Code 3 - Timelimit Exceeded 异常,导致CAS连接报错

最近公司使用CAS连接LDAP,实现单点登录.遇到了这个问题:登录后,抛出错误: 查看CAS后台,看到这个异常. javax.naming.TimeLimitExceededException: LDAP: error code 3 百度,Bing找了一遍,发现是LDAP服务器的配置问题. 我们使用的是OpenLdap,到对应目录下看到两个配置文件,ldap.conf和slapd.conf,在ldap.conf中看到被注释掉的TIMELIMIT.去掉注释,改成0,如图: 然后,重启OpenLda

【C#】浅谈如何抛出和捕获干净的WebService异常

说明:[干净]指的是客户端在捕获WebService(下称WS)抛出的异常时,得到的ex.Message就是WS方法中抛出的异常消息,不含任何“杂质”. 前提:你对WS有编写权.就是说如果你调的是别人写的WS,那么也许只能通过字符串处理的方式才能得到干净的ex.Message. 先看示例: - WS方法: /// <summary> /// 测试WS抛异常 /// </summary> /// <param name="isSoapEx">为true

添加引用方式抛出和捕获干净的WebService异常

转载:http://www.cnblogs.com/ahdung/p/3953431.html 说明:[干净]指的是客户端在捕获WebService(下称WS)抛出的异常时,得到的ex.Message就是WS方法中抛出的异常消息,不含任何“杂质”. 前提:你对WS有编写权.就是说如果你调的是别人写的WS,那么也许只能通过字符串处理的方式才能得到干净的ex.Message. 先看示例: - WS方法: /// <summary> /// 测试WS抛异常 /// </summary>

为什么使用 Arrays.asList()得到的集合,使用remove( )和 add( )方法会抛出unsupportedoperationexception(不支持操作异常)

这是由于: Arrays.asList() 返回java.util.Arrays$ArrayList, 而不是ArrayList. Arrays$ArrayList和ArrayList都是继承AbstractList,remove,add等 method在AbstractList中是默认throw UnsupportedOperationException而且不作任何操作. ArrayList override这些method来对list进行操作,但是Arrays$ArrayList没有over

基于ADB框架Robotium跨进程操作

转自:http://blog.csdn.net/qingchunjun/article/details/42580937 2015年2月3日更新: 有些朋友在用真机尝试本方法时,抛出了InputStream cannot be null的异常.该异常是由于adb运行在robotium框架中时,是完全运行在手机中的,此时它的权限受到android系统的限制.而原框架是用在PC端的,这才导致了该异常的出现.具体的原因分析可以见我的这篇文章:http://blog.csdn.net/qingchunj

PLSQL_Oracle Exception异常分类、异常抛出、异常处理、异常传播(概念)

2014-06-03 BaoXinjian 一.摘要 在PLSQL程序开发过程中,很重要的部分就是对程序异常的监控和处理,包括如何触发异常,何时进行处理,如何进行处理,是否将程式中的所有异常集中在一起,通过公共异常处理的procedure或function,如果没有完善的程式处理机制,很难说该程式是一只健壮的程式,当程式遇到很多类型或者量很多资料时,系统若没有异常处理必然会导致程式的出错 当预判到了某些异常,需要对预判到的异常进行合适相应的处理,是否抛出异常还是忽略还是其他 当然程式没有预判到或

FtpClient 调用storeFile 抛出 java.net.SocketException异常

在使用换了commons-net 的 FTPClient 调用storeFile方法时报错, 调用 res = ftp.storeFile(remoteFileName, inputStream);后返回true,并且文件能正常上传,但是抛出java.net.SocketException: Socket closed异常. 解决: 更新commons-net  jar包,从3.0升到3.4 该问题消失了. 原文地址:https://www.cnblogs.com/Allen-win/p/106