您的位置:首页 > 移动开发 > Android开发

执行Android JUnit测试出现java.net.SocketException: Permission denied的解决方法

2013-08-02 19:43 706 查看
问题:

执行Android应用程序的junti测试时,执行结果为Error,Failure Trace如下:

java.net.SocketException: Permission denied

at org.apache.harmony.luni.platform.OSNetworkSystem.createStreamSocketImpl(Native Method)

at org.apache.harmony.luni.platform.OSNetworkSystem.createStreamSocket(OSNetworkSystem.java:186)

at org.apache.harmony.luni.net.PlainSocketImpl.create(PlainSocketImpl.java:265)

at java.net.Socket.checkClosedAndCreate(Socket.java:873)

at java.net.Socket.connect(Socket.java:1020)

。。。。

这里假设手机或者模拟器可以正常上网,不能上网的请忽略此文。

原因分析:

1. app的manifest文件需要添加联网的权限。

大部分人出错都是这个原因。如下:

<uses-permission android:name="android.permission.INTERNET"/>

具体添加位置可参考

/article/1741877.html

2. AndroidManifest.xml文件中android:targetPackage的值,即包名错误。

这个是我今天调试犯的错误,找了好久才发现原因。

创建可执行junit测试的Android应用程序时,需要在AndroidManifest.xml的指定位置添加以下信息:

<!-- 这个添加在manifest节点下 -->

<instrumentation

android:name="android.test.InstrumentationTestRunner"

android:targetPackage="com.hunter.querymobile" />

<!-- 这个添加在application节点下 -->

<uses-library android:name="android.test.runner" />

特别需要注意的是,每次添加这部分信息时一定要修改targetPackage的包名,我的代码就是忘了修改这个包名导致错误的

3. 修改后的最新代码没有正常编译。

Clean一下代码,可能是刚修改的代码没有重新编译造成的。这个是在网上看到的一个情况。

菜单栏-->Project-->Clean...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐