day02
1 测试的相关概念


[1]好的软件不是开发出的 是不断测试出来的
1.1根据是否知道源代码
黑盒:
白盒:
1.2根据测试的粒度
方法测试
单元测试
集成测试
系统测试
1.3根据测试的暴力程度
压力测试
冒烟测试
谷歌工程师给我们提供了一个monkey + 1000 指令可以进行压力测试
2 单元测试
[1]定义一个类继承AndroidTestCase
[2]在清单文件配置uses-library 和 instrumentation
<instrumentationandroid:name="android.test.InstrumentationTestRunner"android:targetPackage="com.phone.unittest"/>
<!-- 配置函数库 --><uses-library android:name="android.test.runner"/>
[3]如果ppt 搞丢了,可以自己手动创建一个Android的测试工程,在测试工程里面都会自动配置好
3 日志猫的使用
Log.v(tag, "我是verbose级别"); ----蓝色Log.i(tag, "我是info级别"); -----绿色Log.d(tag, "我是debug级别"); -----黑色Log.w(tag, "我是warn级别"); -----黄色Log.e(tag, "我是error级别"); -----红色
4 login登录案例
[1]画UI

[2]根据我们画的UI写对应的业务逻辑
//[2]写按钮的点击事件public void login(View v){//[2.1]获取用户名和密码String name = et_name.getText().toString().trim();String pwd = et_userpassword.getText().toString().trim();//[2.2]判断name 和 pwd 是否为空if(TextUtils.isEmpty(name)||TextUtils.isEmpty(pwd)){Toast.makeText(MainActivity.this, "用户或密码不能为空", Toast.LENGTH_LONG).show();}else{//[2.3]进行登录的逻辑System.out.println("连接服务器进行登录等我们讲到第四天网络编程再说");if(cb_ischeck.isChecked()){//[2.3.1]把数据保存到SD卡需要先判断一下sd卡状态是否可用if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){//Toast.makeText(MainActivity.this, "sd卡可用", Toast.LENGTH_LONG).show();//[2.4]把用户名和密码的数据存起来boolean result = UserInfoUtils.saveInfo(name, pwd);if(result){Toast.makeText(MainActivity.this, "保存成功", Toast.LENGTH_LONG).show();}else{Toast.makeText(MainActivity.this, "保存失败", Toast.LENGTH_LONG).show();}}else{Toast.makeText(MainActivity.this, "sd卡不可用", Toast.LENGTH_LONG).show();}}else{Toast.makeText(MainActivity.this, "请勾选‘记住用户名密码’", Toast.LENGTH_LONG).show();}}}
5 使用上下文获取常见目录
[1] String path = getFilesDir().getPath();
[2] 使用上下文快速获取文件的输出流和输入流
FileOutputStream fos = context.openFileOutput("info.txt", 0);
FileInputStream fis = context.openFileInput("info.txt");
6 登录数据存储到sd卡
[1]获取sd卡的目录
String sdpath = Environment.getExternalStorageDirectory().getPath();
[2]如何判断sd卡状态是否可用
if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){}
7 获取sd卡可用空间
//[1]找到我们关心的控件TextView tv_total_size = (TextView) findViewById(R.id.textView2);TextView tv_useable_size = (TextView) findViewById(R.id.textView1);//[2]获取sd卡总大小和可用空间File file = Environment.getExternalStorageDirectory();//总大小long totalSpace = file.getTotalSpace();//可用空间long usableSpace = file.getUsableSpace();//[3]转换数据格式String formatTotalSpace = Formatter.formatFileSize(this, totalSpace);String formatUseableSpace = Formatter.formatFileSize(this, usableSpace);//[4]展示到textview上tv_total_size.setText("总大小:" + formatTotalSpace);tv_useable_size.setText("可用的:" + formatUseableSpace);
8 文件权限的介绍

修改文件的权限 使用linux下一个指令(chmod)
9 SharedPreferences介绍(☆☆☆☆☆)
[1]获取sp的实例
/*** name 会帮助我们生成一个xml文件* mode 模式*/SharedPreferences sp = getSharedPreferences("config", 0);
[2]获取编辑器
Editor edit = sp.edit();
[3]存数据
edit.putString("name", name);edit.putString("pwd", pwd);
[4]最后一定要commit
edit.commit();
10 xml的序列化
[1]StringBuffer 自己组拼
//[1]创建sb对象StringBuffer sb = new StringBuffer();//[2]开始组拼xml文件头sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");//[3]开始组拼xml根节点sb.append("<smss>");//[4]开始组拼sms节点for(Sms sms : smsLists){sb.append("<sms>");//[5]开始组拼address节点sb.append("<address>");sb.append(sms.getAddress());sb.append("</address>");//[6]开始组拼body节点sb.append("<body>");sb.append(sms.getBody());sb.append("</body>");//[7]开始组拼date节点sb.append("<date>");sb.append(sms.getDate());sb.append("</date>");sb.append("</sms>");}sb.append("</smss>");//[8]把数据保存到sd卡中try {File file = new File(Environment.getExternalStorageDirectory().getPath(), "smsbackup.xml");FileOutputStream fos = new FileOutputStream(file);fos.write(sb.toString().getBytes());fos.close();}catch (Exception e){e.printStackTrace();}
[2]使用xmlSerializer 序列化器
<1>获取xmlSerializer 实例
XmlSerializer serializer = Xml.newSerializer();
<2>设置xmlSerializer 序列化参数
File file = new File(Environment.getExternalStorageDirectory().getPath(),"smsbackup2.xml");FileOutputStream fos = new FileOutputStream(file);serializer.setOutput(fos, "utf-8");
<3>开始写xml的文档开头
serializer.startDocument("utf-8", true);
<4>写xml根节点
serializer.startTag(null, "smss");
<5>循环写其他结点
for(Sms sms : smsLists){//sms结点开头serializer.startTag(null, "sms");//[6]开始address节点serializer.startTag(null, "address");serializer.text(sms.getAddress());serializer.endTag(null, "address");//[7]开始body节点serializer.startTag(null, "body");serializer.text(sms.getBody());serializer.endTag(null, "body");//[8]开始date节点serializer.startTag(null, "date");serializer.text(sms.getDate());serializer.endTag(null, "date");//sms节点结束serializer.endTag(null, "sms");}serializer.endTag(null, "smss");//文档的结尾serializer.endDocument();
11 xml的解析
[1]xml的数据来源 来源于服务器 服务器的开发人员通过服务器的技术把数据准备一个xml返回给客户端
[2]对应Android的开发人员 需要做解析的操作 把我们关心的数据取出来就可以了
[3]服务器是以流的形式把数据返回
解析步骤
[1]获取XmlPullParser的实例
XmlPullParser parser = Xml.newPullParser();
[2]设置XmlPullParser的参数
parser.setInput(in,"utf-8");
[3]获取解析的文档的事件类型
int eventType = parser.getEventType();
[4]具体判断一下解析的是哪个便签
//具体判断一下解析到了哪个结点switch(eventType){//解析开始标签case XmlPullParser.START_TAG://[4]具体判断一下 解析到是哪个开始标签if("weather".equals(parser.getName())){//[5]创建一个集合对象weatherLists = new ArrayList<Channel>();}else if("channel".equals(parser.getName())){//[6]创建Channel对象channel = new Channel();//[7]获取id值String id = parser.getAttributeValue(0);channel.setId(id);}else if("city".equals(parser.getName())){//[8]获取city的数据String city = parser.nextText();channel.setCity(city);}else if("temp".equals(parser.getName())){//[9]获取temp的数据String temp = parser.nextText();channel.setCity(temp);}else if("wind".equals(parser.getName())){//[10]获取wind的数据String wind = parser.nextText();channel.setCity(wind);}else if("pm250".equals(parser.getName())){//[11]获取pm250的数据String pm250 = parser.nextText();channel.setCity(pm250);}break;//解析结束标签case XmlPullParser.END_TAG://判断要解析的结束标签if("channel".equals(parser.getName())){//把javabean对象存在集合中weatherLists.add(channel);}break;}
12 今日总结
[0]测试的相关概念(了解)
[1]单元测试(掌握)
定义一个类继承AndroidTestCast
在清单文件里配置一个指令集uses-library
[2]日志猫的使用(了解)
[3]login案例 练习IO(练习一下就可以了)
[4]如何获取sd卡的目录 如何判断sd卡状态是否可用(掌握)
Environment
[5]文件权限的概念(了解)
[6]sp的使用(必须的会)
[7]生成xml的方式
(1)使用StringBuffer(了解)
(2)使用xml的序列化器(掌握)
[8]xml解析(掌握)
只言片语任我说,提笔句句无需忖。落笔不知寄何人,唯有邀友共斟酌。
浙公网安备 33010602011771号