2
-
测试的相关概念
a) 好的软件不是开发出来的,是不断测试出来的
b) 当当,1、2、3、-8;京东,手机卡
c) 根据是否知道源代码:黑盒(根据功能测试)、白盒(知道源代码,自己写测试代码)
d) 根据测试的粒度:方法测试;单元测试;集成测试;系统测试(安卓里不多)
e) 根据测试的暴力程度:压力测试(12306,人多的时候卡);冒烟(一直测试应用到冒烟为止??!)
f) 压力测试adb指令:adb shell->monkey->monkey + 数量 -
单元测试(测试业务方法)
a) 定义一个类继承AndroidTestCase
b) 在清单文件中配置:uses-library 和 instrumentation
c) 如果忘记了怎么配置,在eclipse中新建工程,Android test project -
日志猫的使用:log类
a) 报错先看error 然后式 warn
b) Log.v(tag,“我是v级别”);----黑
c) Log.i(tag,“我是i级别”);----黑
d) Log.d(tag,“我是d级别”);----黑
e) Log.w(tag,“我是w级别”);----深蓝
f) Log.e(tag,“我是e级别”);----红 -
Login登录案例:3_login
a) 使用上下问获取常用目录context.getFilesDir().getPath();(获取的是data/data下的file文件夹)
b) 直接获取输出流context.openFileInput(); -
获取手机可用空间
-
文件权限介绍(共10位)
a) 第一位(文件类型):d(目录)、-(普通文件)。
b) 后三位(表示当前用户):r(可读)、w(可写)、x(可执行)、-(没有权限)。
c) 后三位(表示当前用户所在的组):r(可读)、w(可写)、x(可执行)、-(没有权限)
d) 后三位(其他用户):r(可读)、w(可写)、x(可执行)、-(没有权限)
e) 有权限用1表示,没有用0表示。
f) 修改文件权限(Linux)chmod 777 -
SherePreference (重要)
-
xml 序列化
a) Stringbuffer 自己组拼
public void onclick(View v) {
//<0.0>初始化数据
List<Sms> smsList = new ArrayList<Sms>();
for (int i = 0; i < 10; i++) {
Sms sms = new Sms();
sms.setAddress("10008" +
i);
sms.setBody("nihao" +
i);
sms.setData("201" +
i);
//<0.1>把sms对象加到集合中
smsList.add(sms);
}
//<1>创建sb对象
StringBuffer sb = new StringBuffer();
//<2>组拼xml文件头
sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
//<3>开始组拼根节点
sb.append("<smss>");
for (Sms sms : smsList) {
sb.append("<sms>");
//<>组拼address节点
sb.append("<address>");
sb.append(sms.getAddress());
sb.append("</address>");
//<>组拼body节点
sb.append("<body>");
sb.append(sms.getBody());
sb.append("</body>");
//<>组拼body节点
sb.append("<data>");
sb.append(sms.getData());
sb.append("</data>");
sb.append("</sms>");
}
sb.append("</smss>");
//<4>把数据保存
try {
FileOutputStream fos = openFileOutput("data.xml",0);
fos.write(sb.toString().getBytes());
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
- 使用XmlSerializer序序列化器 生成xml 的步骤
a) 获取XmlSerializer 实例
b) 设置XmlSerializer 序列化序列
c) 写xml 文档开头
d) 写根节点
e) 循环写其他节点
//XmlSerializer 点击生成xml文档
public void onclick(View v){
//<0.0>初始化数据
List<Sms> smsList = new ArrayList<Sms>();
for (int i = 0; i < 10; i++) {
Sms sms = new Sms();
sms.setAddress("10008" +
i);
sms.setBody("nihao" +
i);
sms.setData("201" +
i);
//<0.1>把sms对象加到集合中
smsList.add(sms);
}
//<1>获取xmlseriallier类的实例,通过Xml这个工具类去获取
XmlSerializer xmlSerializer = Xml.newSerializer();
//<2>设置XmlSerializer序列化器参数
try {
FileOutputStream fos = openFileOutput("data.xml", 0);
xmlSerializer.setOutput(fos,"utf-8");
//<3>写xml文档开头
xmlSerializer.startDocument("utf-8",true);
//<4>写xml的根节点
xmlSerializer.startTag(null, "smss");
//<5>循环写sms节点
for (Sms sms : smsList) {
xmlSerializer.startTag(null, "sms");
//address
xmlSerializer.startTag(null, "address");
xmlSerializer.text(sms.getAddress());
xmlSerializer.endTag(null, "address");
//body
xmlSerializer.startTag(null, "body");
xmlSerializer.text(sms.getBody());
xmlSerializer.endTag(null, "body");
//data
xmlSerializer.startTag(null, "data");
xmlSerializer.text(sms.getData());
xmlSerializer.endTag(null, "data");
xmlSerializer.endTag(null, "sms");
}
xmlSerializer.endTag(null, "smss");
//写文档结尾
xmlSerializer.endDocument();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
- Xml的解析
a) 服务器以流的形式返回数据
b)解析内容
<?xml version="1.0" encoding="UTF-8"?>
<weather>
<channel id="1">
<city>北京</city>
<temp>25</temp>
<wind>3</wind>
<pm250>200</pm250>
</channel>
<channel id="2">
<city>郑州</city>
<temp>20</temp>
<wind>4</wind>
<pm250>300</pm250>
</channel>
<channel id="3">
<city>长春</city>
<temp>10</temp>
<wind>4</wind>
<pm250>100</pm250>
</channel>
<channel id="4">
<city>沈阳</city>
<temp>10</temp>
<wind>1</wind>
<pm250>5</pm250>
</channel>
</weather>
代码
//<0>生命一个集合对象
List<Channel> weatherLists = null;
Channel channel = null;
//<1>获取XmlPullParser解析的实例
XmlPullParser xpp = Xml.newPullParser();//基于事件解析,一行一行解析
//<2>设置XmlPullParer
xpp.setInput(in, "utf-8");
//<3>获取事件的类型
int type = xpp.getEventType();
while (type != XmlPullParser.END_DOCUMENT) {
//<4>具体判断解析到哪个节点
switch (type) {
case XmlPullParser.START_TAG://解析开始标签
//<4>具体判断到哪个标签
if ("weather".equals(xpp.getName())) {
//<5>创建一个集合对象
weatherLists = new ArrayList<Channel>();
} else if ("channel".equals(xpp.getName())) {
//<6>创建javabean对象
channel = new Channel();
//<7>获取id值
String id = xpp.getAttributeValue(0);
channel.setId(id);
} else if ("city".equals(xpp.getName())) {
String city = xpp.nextText();
channel.setCity(city);
}else if ("temp".equals(xpp.getName())) {
String temp = xpp.nextText();
channel.setTemp(temp);
}else if ("wind".equals(xpp.getName())) {
String wind = xpp.nextText();
channel.setWind(wind);
}else if ("pm250".equals(xpp.getName())) {
String pm250 = xpp.nextText();
channel.setPm250(pm250);
}
break;
case XmlPullParser.END_TAG://解析结束标签
//判断一下要解析的结束标签
if ("channel".equals(xpp.getName())) {
// 把javabean存到集合中
weatherLists.add(channel);
}
break;
}
//不停的向下解析
type=xpp.next();
}
上一篇: Ubuntu安装向日葵远程控制软件
下一篇: 2