Android基础笔记一之测试与文件操作

一.Android测试

1.测试的分类

1.1. 根据测试是否有源代码

a.黑盒测试:不知道源代码,测试应用程序的业务逻辑

b.白盒测试:写测试代码,测试源代码里面的业务方法

1.2. 根据测试的粒度

a.方法测试(function test):对某个方法进行测试

b.单元测试(unit test):junit测试框架,对程序的某个单元模块进行测试

c.集成测试(integration test):对系统中的多个单元集成后进行测试

d.系统测试(system test):对整个系统进行测试

1.3. 根据测试的暴力程度

a.冒烟测试(smoke test):不停的开启线程,直到系统冒烟为止

b.压力测试(pressure test):web方面应用较多,主要测试系统可以同时响应多少个请求

c.Google提供测试方法:对Android的冒烟测试和压力测试,Google提供了测试方法,cmd>>adbshell>>monkey 500(通过此步骤即可完成对系统的500次点击)

2.Android测试框架

2.1. 编写测试代码

a.不需要引入测试的jar包

b.创建测试类,继承AndroidTestCase类

c.所有的测试方法必须向测试框架抛出异常,以便让测试框架获取到异常信息

d.测试方法不能存在参数

e.通过assertEquals(value,result)方法,对结果进行断言,其中value是正确的结果,result是程序运行的结果

2.2. 清单文件中进行配置

a.在manifest节点下,添加指令集<instrumentationandroid:name=”android.test.InstumentationTestRunner” android:targetPackage=”com.hhtc.test”/>(targetPackage指定内容为要测试内容的包名)

b.在application节点下,配置函数库<uses-libraryandroid:name=”android.test.runner”/>

2.3. 上传到手机,在dalvik虚拟机里运行

3.日志的等级

3.1. 显示平台:与web控制台的不同,Android是通过Logcat显示日志信息

3.2. 日志的等级

a.verbose 提醒 黑色 log.v(tag,””)

b.debug 调试 蓝色 log.d(…)

c.info 信息 绿色 log.i(…)/System.out.println()

d.warn 警告 橙色 log.w(…)/System.err.println()

e.error 错误 红色 log.e(…)

二.文件操作

1.文件的读写

1.1. 手机存储空间

a. 手机内部存储空间:手机的一块微内存,相当于电脑的ROM,断电了数据还是存在的

b. 手机内存:相当于电脑上的内存条,RAM,断电后数据消失

c. 外部存储空间:SD卡

1.2.  写入文件到手机

a. 调用context.getFilesDir()/Environment.getDataDirectory()可以获得手机的存储空间的目录

b. 自定义输出流或者通过context.openFileOutput()创建输出流,将要保存的数据保存到手机的内部存储空间上

1.3.  写入文件到SD卡上

a. 调用Environment.getExternalStroageDirectory()方法,获取到手机SD卡的目录

b. 自定义输出流或者通过context.openFileOutput()创建输出流,将要保存的文件保存到手机SD卡上

c. 在Manifest清单文件<manifest>节点下,添加写入SD卡的权限<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

d. 写入SD卡,需要在清单中设置权限;读取SD卡默认情况下不需要权限,Android4.0之后,如果设置了SD卡读写保护,则必须要在清单文件中设置读的权限

e. 获取SD卡状态:Environment.getExternalStroageState(),常量Environment.MEDIA_MOUNTED为已安装

1.4.  常用的AndroidAPI

a. context.getCacheDir():获取文件的缓存目录,对应手机上的/data/data/包名/cache

b. context.openFileOutput(name,mode):获取输出流,第一个参数为文件名,第二个参数为模式,模式有MODE_PRIVATE(私有模式)/MODE_APPEND(追加模式)/MODE_WORLD_READABLE(全局可读)/MODE_WORLD_WRITEABLE(全局可写)

c. context.openFileInput(name,mode):获取文件的输入流,参数同上

2.XML操作文件

2.1. 初始化序列器:通过Xml.newSerializer()获取一个xml文件的初始化序列器

2.2.  序列器配置参数:通过setOutput(fos,encoding)设置序列器参数,第一个参数为文件输出流,第二个参数为字符编码

2.3.  写Xml文件:通过序列器的startDocument()和endDocument()设置xml文件的开始/结束文档标记,startTag(namespace,name)和endTag(name)设置xml中节点的标记,text()用于获取xml开始和结束标记之间的内容

3.SharedPreferences操作文件

3.1. 获取SharedPreferences(简称sp):可以通过context.getSharedPreferences(name,mode),第一个参数为sp的名字,第二个参数为模式(参考1.4.b)

3.2.  在处理OnClick事件的方法中获取编辑器:sp.edit(),通过编辑器的putBoolean(…),putInt(…)将事件保存(结果以.xml的形式保存在手机内存中),通过编辑器的commit()方法提交事务

3.3.  获取事件响应的结果,通过sp的getBoolean(…),getInt(…)方法得到响应的结果

3.4.  View根据sp获得的响应结果,设置数据回显到页面上

4. pull解析

4.1.  常见的解析方式

a. SAX解析:基于整个事件,进行逐步解析

b. DOM解析:将整个树状结构加载到内存中

c. Pull解析:android内部提供的解析方式,类似于SAX解析,开源XML解析的框架

4.2.  初始化序列器:通过调用Xml.newPullParser()(简称parser),获得序列器,设置序列器的属性parser.setInput(in,encoding),第一个参数问输入流,第二个参数为编码格式

4.3.  对Xml文件进行解析

a. 获取当前的事件类型,parser.getEventType()

b. 设置type!=XmlPullParser.END_DOCUMENT条件进行遍历,让解析器解析到文件的末尾处

通过XmlPullParser.START_TAG开始遍历所有的节点,通过XmlPullParser.END_TAG对遍历的节点进行处理

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。