快捷搜索:  汽车  科技

android 导入习题:挖穿Android第三十天

android 导入习题:挖穿Android第三十天|单元 |方法 |黑盒 --->不知道 |白盒 --->知道 [2.2]根据测试的粒度

android 导入习题:挖穿Android第三十天(1)

听说有封面才能火

测试相关概念

[1]好的产品 不是研发出来的 是测试出来的

[2]测试的分类

[2.1]根据是否知道源代码

|黑盒 --->不知道

|白盒 --->知道

[2.2]根据测试的粒度

|方法

|单元

|系统

|集成

[2.3]暴力测试

|压力

|冒烟

|monkey 数量

Android 单元测试 instrumentation

[1]在Manifest.xml中添加测试机

[2]加载测试机

[3]定义一个类继承AndroidTestCase

logcat的使用(日志猫)

[1]Log.i(TAG "我是info级别");

[2]Log.d(TAG "我是debug级别");

[3]Log.w(TAG "我是warm级别");

[4]Log.e(TAG "我是error级别");

login登录案例

Toast友好提示

保存数据

// 判断帐号和密码是否为空

if (TextUtils.isEmpty(name) || TextUtils.isEmpty(pwd)) {

// 帐号和密码为空 显示一个友好的提示

Toast.makeText(this "帐号或者密码为空" 0).show();

} else {

// 判断checkBox控件是否被选中

if (ck_pwd.isChecked()) {

// 保存帐号和密码

boolean result = FileUtils.outputFile(name pwd);

if (result) {

Toast.makeText(this "帐号和密码保存成功" 0).show();

} else {

Toast.makeText(this "帐号和密码保存失败" 0).show();

}

} else {

// 显示帐号和密码

Toast.makeText(this

"登录成功" " 帐号 : " name " 密码 :" pwd 0).show();

}

}

把数据写入到文件里面去

public static boolean outputFile(String name String pwd) {

String result = name "#" pwd;

try {

File file = new File("/data/data/com.heima.login/1.txt");

FileOutputStream fos = new FileOutputStream(file);

fos.write(result.getBytes());

return true;

} catch (Exception e) {

e.printStackTrace();

return false;

}

}

文件里面获取数据

public static HashMap<String String> readFile() {

try {

File file = new File("/data/data/com.heima.login/1.txt");

FileInputStream fips = new FileInputStream(file);

BufferedReader reader = new BufferedReader(new InputStreamReader(

fips));

String result = reader.readLine();

String[] split = result.split("#");

HashMap<String String> map = new HashMap<String String>();

map.put("name" split[0]);

map.put("pwd" split[1]);

return map;

} catch (Exception e) {

e.printStackTrace();

return null;

}

}

上下文的使用和存储数据到sd卡

上下文的使用

String path = context.getFilesDir().getPath();

FileOutputStream fos = new FileOutputStream(new File(path "1.txt"))

String path = context.getFilesDir().getPath();

FileInputStream fips = new FileInputStream(new File(path "1.txt"))

FileOutputStream fos = context.openFileOutput("1.txt" 0);

FileInputStream fips = context.openFileInput("1.txt");

API

[1]context.getFilesDir().getPath();

[2]context.openFileOutput("into.txt" 0);

[3]Environment.getExternalStorageDirectory().getPath();

[4]Environment.getExternalStorageState();

Environment (Provides access to environment variables.)实际就是访问系统目录的工具

----------

MEDIA_BAD_REMOVAL 在没有挂载前sd卡已经被移除。

MEDIA_CHECKING 正在检查sd卡。

MEDIA_MOUNTED sd卡 挂载,挂载点可读/写。

MEDIA_MOUNTED_READ_ONLY sd卡 挂载,挂载点只读。

MEDIA_NOFS sd卡 是空白或是不支持的文件系统。

MEDIA_REMOVED sd卡 被移除。

MEDIA_SHARED sd卡 正在通过USB共享。

MEDIA_UNMOUNTABLE sd卡 无法挂载。

MEDIA_UNMOUNTED sd卡 没有挂载。

if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {}

Environment.getExternalStorageDirectory().getPath() == /mnt/sdcard/

获取sd卡的大小

File file = Environment.getExternalStorageDirectory();

//获取总空间

long totalSpace = file.getTotalSpace();

//获取可用空间

long usabSpace = file.getUsableSpace();

String ts = Formatter.formatFileSize(this totalSpace);

String us = Formatter.formatFileSize(this freeSpace);

文件权限的介绍

ugo -rwxrw-r--

rwxrwxrwx

r 读 w 写 x 执行

第1位:文件类型(d 目录,- 普通文件,l 链接文件)

第2-4位:所属用户权限,用u(user)表示

第5-7位:所属组权限,用g(group)表示

第8-10位:其他用户权限,用o(other)表示

用数字来表示权限 r=4,w=2,x=1,-=0

rw- = 4 2 = 6

rwx = 4 2 1 = 7

r-x = 4 1 = 5

[1]FileOutputStream fops = openFileOutput("write.txt" MODE_WORLD_WRITEABLE);

[2]FileOutputStream fops = openFileOutput("read.txt" MODE_WORLD_READABLE);

[3]FileOutputStream fops = openFileOutput("append.txt" MODE_APPEND);

[4]FileOutputStream fops = openFileOutput("private.txt" MODE_PRIVATE);

sp的使用

Shared Preferences:主要用来保存应用配置和小量数据的一种存储方式 使用类似map

生成XML

XML的作用:是用来存储数据和传输数据

[1]传统方式 自己组拼字符串

[2]官方推荐xml序列化器

[2.1]获取xml的序列化器

[2.2]开始序列化xml

[2.3]开始组拼xml的

```Xml

<?xml version="1.0" encoding="utf-8"?>

<user>

<person>

<name>诸葛</name>

<age>18</age>

</person>

<person>

<name>夏候</name>

<age>20</age>

</person>

<person>

<name>司马</name>

<age>16</age>

</person>

</user>

```

XmlSerializer serializer = Xml.newSerializer();

File file = new File("/mnt/sdcard/person1.xml");

FileOutputStream fops = new FileOutputStream(file);

serializer.setOutput(fops "UTF_8");

serializer.startDocument("utf-8" false);

serializer.startTag(null "user");

for (int i = 0; i < list.size(); i ) {

serializer.startTag(null "person");

serializer.startTag(null "name");

serializer.text(list.get(i).name);

serializer.endTag(null "name");

serializer.startTag(null "age");

serializer.text(list.get(i).age);

serializer.endTag(null "age");

serializer.endTag(null "person");

}

serializer.endTag(null "user");

serializer.flush();

Xml的解析

获取事件类型

parser.getEventType()

获取标签名称

parser.getName()

获取属性值

parser.getAttributeValue(0)

获取标签里面的值

parser.nextText()

跳到下一个事件

eventType=parser.next()

ArrayList<Channel> list = new ArrayList<Channel>();

AssetManager assets = getAssets();

InputStream open = assets.open("weather.xml");

XmlPullParser parser = Xml.newPullParser();

parser.setInput(open "utf-8");

int eventType = parser.getEventType();

while (eventType != parser.END_DOCUMENT) {

switch (eventType) {

case XmlPullParser.START_TAG:

if (parser.getName().equals("channel")) {

channel = new Channel();

String id = parser.getAttributeValue(0);

channel.id = id;

} else if (parser.getName().equals("city")) {

channel.city = parser.nextText();

} else if (parser.getName().equals("temp")) {

channel.temp = parser.nextText();

}

break;

case XmlPullParser.END_TAG:

if (parser.getName().equals("channel")) {

list.add(channel);

}

break;

}

eventType = parser.next();

}

System.out.println(list.toString());

猜您喜欢: