Android Studio对json返回值进行单元测试,总是只有第一遍能打印log结果

小田不紧张 2016-04-05 11:32:17
最近在学习android开发,用的开发环境是Android Studio 1.0版本。
要做一个查单词的app,用的是有道API,只写了一个HttpUtils类(传入英文单词进行翻译),然后在专门放测试类的包里创建了单元测试类进行单元测试。用的是真机调试。
一切都很顺利,第一次也测试成功了,返回了json请求的返回值并且log打印出来了。然而当我关了android studio再重新打开,再运行测试,log就不出结果了!!查了好多资料,单元测试的方法没问题,因为第一次运行成功了所以说测试用的真机没有问题,ddms里也能连接上真机,后来我发现设备管理器里有几个外围设备有感叹号,于是去修复驱动。。。但是都没有解决问题!实在不知道问题出在何处,困扰一天了,请教各位好人。。不知道大家有没有遇到过相同的情况,是如何解决的!
还有不知道这个问题如果不解决的话会不会影响后面整个app使用我测试的HttpUtils这个类?如果不影响,实在解决不了就先这么着吧。。。这里先感谢各位好人!

附上源码:
HttpUtils.java代码
package com.example.administrator.temptest;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URLEncoder;

/**
* Created by Administrator on 2016/4/1.
*/
public class HttpUtils {

private static final String URL="http://fanyi.youdao.com/openapi.do?keyfrom=29094&key=1458&type=data&doctype=json&version=1.1&q=";


public static String doGet(String msg){

String result="";
String url = setParams(msg);
InputStream is = null;
ByteArrayOutputStream baos =null;

try {
java.net.URL urlNet = new java.net.URL(url);
HttpURLConnection conn = (HttpURLConnection)urlNet.openConnection();

conn.setReadTimeout(2*1000);
conn.setConnectTimeout(2*1000);
conn.setRequestMethod("GET");

is = conn.getInputStream();
int len = -1;
byte[] buf = new byte[128];
baos = new ByteArrayOutputStream();

while ((len = is.read(buf))!=-1){
baos.write(buf,0,len);
}
baos.flush();//清楚缓冲区
result = new String(baos.toByteArray());


} catch (MalformedURLException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}finally {
try {
if (baos != null)
baos.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
if (is != null)
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}

return result;
}

private static String setParams(String msg) {
String url = "";
try {
url = URL+ URLEncoder.encode(msg,"UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return url;
}

}


测试类TestClass.java
package com.example.administrator.temptest;

import android.test.InstrumentationTestCase;
import android.util.Log;



/**
* Created by Administrator on 2016/4/1.
*/
public class TestClass extends InstrumentationTestCase{
public void test() throws Exception{

String res = HttpUtils.doGet("play");
Log.i("tag",res);

}
}


第一次运行测试类的结果:


第二次就不显示了……
...全文
357 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
bdmh 2016-04-06
  • 打赏
  • 举报
回复
你调试一下吧,看看第二次能否正常返回结果,是不是报错了,被catch了
小田不紧张 2016-04-05
  • 打赏
  • 举报
回复
Manifest文件里也写了<uses-permission,主要是第一次测试是成功的!不知道为何第二次再测试就打印不出log结果

80,490

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧