要做一个查单词的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);
}
}
第一次运行测试类的结果:
第二次就不显示了……
2 个解决方案
#1
Manifest文件里也写了<uses-permission,主要是第一次测试是成功的!不知道为何第二次再测试就打印不出log结果
#2
你调试一下吧,看看第二次能否正常返回结果,是不是报错了,被catch了
#1
Manifest文件里也写了<uses-permission,主要是第一次测试是成功的!不知道为何第二次再测试就打印不出log结果
#2
你调试一下吧,看看第二次能否正常返回结果,是不是报错了,被catch了