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

时间:2022-09-18 14:03:30
        最近在学习android开发,用的开发环境是Android Studio 1.0版本。
        要做一个查单词的app,用的是有道API,只写了一个HttpUtils类(传入英文单词进行翻译),然后在专门放测试类的包里创建了单元测试类进行单元测试。用的是真机调试。
        一切都很顺利,第一次也测试成功了,返回了json请求的返回值并且log打印出来了。然而当我关了android studio再重新打开,再运行测试,log就不出结果了!! Android Studio对json返回值进行单元测试,总是只有第一遍能打印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);

    }
}


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

第二次就不显示了……
Android Studio对json返回值进行单元测试,总是只有第一遍能打印log结果

2 个解决方案

#1


Manifest文件里也写了<uses-permission,主要是第一次测试是成功的!不知道为何第二次再测试就打印不出log结果 Android Studio对json返回值进行单元测试,总是只有第一遍能打印log结果

#2


你调试一下吧,看看第二次能否正常返回结果,是不是报错了,被catch了

#1


Manifest文件里也写了<uses-permission,主要是第一次测试是成功的!不知道为何第二次再测试就打印不出log结果 Android Studio对json返回值进行单元测试,总是只有第一遍能打印log结果

#2


你调试一下吧,看看第二次能否正常返回结果,是不是报错了,被catch了