在开发中,为了提高开发效率,我们一般会自定义自己的工具类。为了保证项目的可靠性,在将工具类引入项目之前,我们一般都会对工具类进行单元测试,下面我们通过一个实例看一下如何搭建测试环境。

1.首先自定义一个工具类,这里我们自定义了一个连接图灵机器人API的网络测试类:

package com.yayun.chatrobot.utils;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.URL;
import java.net.URLEncoder;public class NetUtil {private final static String URLSTRING = "http://www.tuling123.com/openapi/api";// URLprivate final static String KEY = "eb5a484b007db73d44cb35300ef58c73";private static String requestString = URLSTRING + "?key=" + KEY + "&info=";public static String doGet(String msg) {String result = "";String url = "";try {url = requestString + URLEncoder.encode(msg, "UTF-8");} catch (UnsupportedEncodingException e1) {e1.printStackTrace();}InputStream is = null;ByteArrayOutputStream baos = null;try {URL urlNet = new URL(url);HttpURLConnection conn = (HttpURLConnection) urlNet.openConnection();conn.setRequestMethod("GET");conn.setReadTimeout(5000);conn.setConnectTimeout(5000);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();}if (is != null) {is.close();}} catch (IOException e) {e.printStackTrace();}}return result;}}

2.我们需要配置AndroidManifest.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.yayun.chatrobot"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="17" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><uses-library android:name="android.test.runner" /> <!-- 单元测试 --><activityandroid:name=".MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application><instrumentationandroid:name="android.test.InstrumentationTestRunner"android:label="This is Test"android:targetPackage="com.yayun.chatrobot" ></instrumentation></manifest>

上面配置的位置标记一下:

3.下面开始编写测试类:

import com.yayun.chatrobot.utils.NetUtil;import android.test.AndroidTestCase;
import android.util.Log;/*** 继承AndroidTestCase* * @author Administrator**/public class TestNetUtil extends AndroidTestCase {public void testSendInfo() {String res = NetUtil.doGet("你好!");Log.e("Tag", res);res = NetUtil.doGet("你是谁!");Log.e("Tag", res);}}

4.如图:选择测试方法testSendInfo,右键选择android单元测试:

运行这是报错:

原来是没有配置网络权限:<uses-permission android:name="android.permission.INTERNET"/>

配置后按照步骤4再次运行:

这时我们的测试就通过了!

喜欢的朋友请关注我!谢谢

Android实战简易教程-第五十枪(工具类的测试)相关推荐

  1. Android实战简易教程-第五十一枪(ListView实现子控件的动态显示和隐藏、checkbox全选和反选)

    前段时间写过一篇文章:Android实战简易教程-第四十七枪(ListView多选-实现点餐系统)有的同学留言建议,可不可以动态控制checkbox的显示和全选反选功能,我研究了一下,发现实现也比较容 ...

  2. Android实战简易教程-第六十枪(分享一个城市选择功能模块)

    在做一些APP的时候可能会用到城市选择模块的功能,本实例可以提供位置自定定位和手动选择的功能,非常好用,大家可以修改后加入自己的项目中. 首先看一下效果: 1.进入有的手机可能会提示权限要求,这时我们 ...

  3. Android实战简易教程-第五十七枪(分享小米手电筒源码)

    手电筒功能实现简单很实用,下面我们就来研究一下如何自制一款手电筒小程序,初学者可以通过实例了解原理,提高学习android技术的热情和动力. 首先我们了解一下手电筒要调用哪些android权限: &l ...

  4. Android实战简易教程-第三十九枪(第三方短信验证平台Mob和验证码自动填入功能结合实例)

    用户注册或者找回密码时一般会用到短信验证功能,这里我们使用第三方的短信平台进行验证实例. 我们用到第三方短信验证平台是Mob,地址为:http://mob.com/ 一.注册用户.获取SDK 大家可以 ...

  5. Android实战简易教程-第七十五枪(WIFI直连工具类)

    设置指定的WIFI用户名密码和加密方式,可以进行WIFI直连. 1.工具类-WifiUtil.java: package demo.androidwar.com.myapplication;impor ...

  6. Android实战简易教程-第六十六枪(服务器端搭建和服务器端Json数据交互)

    学习Android有一段时间了,对服务器端有很深的好奇,决定对服务器端的实现进行一些研究,这里实现了一个简单的小例子,用于获取服务器端的json数据,例子很简单,适合初学者学习使用. 服务器端 首先我 ...

  7. Android实战简易教程-第六十五枪(自定义控件实现数字液晶时钟Demo)

    下面我们研究一下如何实现一个数字液晶时钟,本质属于特效一种哈. 首先创建一个布局文件: <?xml version="1.0" encoding="utf-8&qu ...

  8. Android实战简易教程-第三十六枪(监听短信-实现短信验证码自动填入)

    一般用户喜欢用手机号作为用户名注册APP账号,这时一般都是通过手机验证码的方式进行验证,下面我们就研究一个非常实用的方法,通过监听短信-实现短信验证码的自动填入,提高用户体验. 首先我们看一下如何监听 ...

  9. Android实战简易教程-第三十四枪(基于ViewPager和FragmentPagerAdapter实现滑动通用Tab)...

    上一段时间写过一篇文章<基于ViewPager实现微信页面切换效果> 里面实现了相似微信Tab的页面.可是这样的实现方法有个问题.就是以后全部的代码逻辑都必须在MainActivity中实 ...

最新文章

  1. 用tar来备份Ubuntu操作系统
  2. linux基本工具使用(二)
  3. php mysql 链表_php实现数据结构的单向链表
  4. 《HTML、CSS、JavaScript 网页制作从入门到精通》——第6章 使用表格
  5. CSharpGL(29)初步封装Texture和Framebuffer
  6. C语言试题五十六之计算并输出给定整数n的所有因子(不包括1与自身)之和。规定n的值不大于1000。
  7. mysql5.7.11升级_MySQL升级从5.6.18到5.7.11
  8. ※ 冯·诺依曼体系结构——模拟 TOY 计算机(MOOC版)
  9. 《麻省理工公开课:线性代数》中文笔记来了!
  10. matlab 偏最小二乘回归,偏最小二乘法回归和判别分析的Matlab开源免费库
  11. Android ndk开发C调用C++
  12. 怎么注册tk域名_TK域名免费注册及解析图文教程
  13. 如何在vue项目中引入video.js插件
  14. android studio git 错误 unable to read askpass
  15. mumu模拟器安装xpk包
  16. 针对移动式和无线物联网设备的低压电机控制系统的设计
  17. 几种矩阵分解算法: LU分解,Cholesky分解,QR分解,SVD分解,Jordan分解
  18. keytool 错误:java.io.IOException:Incorrect AVA format
  19. 偷偷学Python,怎么高空建楼(Python自动化办公实现批量替换Word)
  20. CSDN下载积分获取途径

热门文章

  1. 数据库云管平台将成为企业数字化转型的重要工具
  2. PPPoE 技术白皮书
  3. 单因子——数据Wind
  4. 【Linux】ARM篇七--WDT看门狗实验
  5. 【Java】view.setVisibility()的使用方法
  6. HTML基础-html标签、标签属性及核心功能
  7. 微商分销管理系统开发解决方案
  8. Linux常用工具使用手册——文件MD5的验证方法
  9. MFC Windows程序设计 读书笔记2
  10. CODE[VS] 1219 骑士游历